Я пытаюсь выяснить, как использовать merge()
обновить базу данных.
Вот пример. Возьмите, например, кадр данных foo
foo <- data.frame(index=c('a', 'b', 'c', 'd'), value=c(100, 101, NA, NA))
Который имеет следующие значения
index value
1 a 100
2 b 101
3 c NA
4 d NA
И кадр данных bar
bar <- data.frame(index=c('c', 'd'), value=c(200, 201))
Который имеет следующие значения:
index value
1 c 200
2 d 201
Когда я выполняю следующее merge()
функционируйте для обновления значений для c
и d
merge(foo, bar, by='index', all=T)
Это приводит к этому выводу:
index value.x value.y
1 a 100 NA
2 b 101 NA
3 c NA 200
4 d NA 201
Я хотел бы вывод merge()
избегать создания, в этом определенном примере, value.x
и value.y
но только сохраните первоначальный столбец value
Существует ли простой способ сделать это?
Разве merge ()
не всегда связывает столбцы вместе? Работает ли replace ()
?
foo$value <- replace(foo$value, foo$index %in% bar$index, bar$value)
или match ()
, поэтому порядок имеет значение
foo$value[match(bar$index, foo$index)] <- bar$value
merge()
объединяет только новые данные. Например, если у вас есть набор данных о среднем доходе для нескольких городов и отдельный набор данных о населении этих городов, вы можете использовать merge()
для объединения одного набора данных с другим.
Как сказал apeescape, replace()
- это, вероятно, то, что вам нужно.