как использовать слияние () для обновления таблицы в R

Я пытаюсь выяснить, как использовать 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 Существует ли простой способ сделать это?

19
задан andrewj 6 July 2010 в 20:50
поделиться

2 ответа

Разве merge () не всегда связывает столбцы вместе? Работает ли replace () ?

foo$value <- replace(foo$value, foo$index %in% bar$index, bar$value)

или match () , поэтому порядок имеет значение

foo$value[match(bar$index, foo$index)] <- bar$value
7
ответ дан 30 November 2019 в 05:15
поделиться

merge() объединяет только новые данные. Например, если у вас есть набор данных о среднем доходе для нескольких городов и отдельный набор данных о населении этих городов, вы можете использовать merge() для объединения одного набора данных с другим.

Как сказал apeescape, replace() - это, вероятно, то, что вам нужно.

0
ответ дан 30 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: