2015-11-17 6 views
1

У меня есть dataframeобновление столбца в dataframe на основе другого dataframe

df1 -> 

ID Name 
1 Test1 
2 Test2 
3 Test3 

У меня есть еще один dataframe df2

df2 -> 

ID Name 
1 Char 
2 Float 
3 Decimal 
4 String 

Теперь я хочу, чтобы обновить df1 значения имен на основе имен из df2 с помощью ID

Теперь мой выход df1 должен быть

ID Name 
1 Char 
2 Float 
3 Decimal 

Пожалуйста, дайте мне знать, как добиться этого.

+1

Я попытался бы уточнить, хотите ли вы выполнить поиск по ID или просто совместить одинаково пронумерованные строки. –

ответ

0

Не уверен, что если вы ищете что-то, кроме просто:

df1$Name <- df2$Name[1:3] 
4

Мы можем использовать match

df1$Name <- df2$Name[match(df1$ID, df2$ID)] 

Или, как @thelatemail упоминалось, это может быть решена с merge

merge(df1["ID"], df2, all.x=TRUE) 
+2

Также 'merge' -' merge (df1 ["ID"], df2, all.x = TRUE) ' – thelatemail

2

Другой вариант:

library(qdapTools) 
df1$Name <- df1$ID %l% df2 
0

Используйте ID, чтобы получить правильные имена.

df1$Name <- df2$Name[df1$ID]

Обратите внимание, что это решение применимо, если число наблюдений в df1 меньше или равно числу наблюдений в df2, в противном случае, вы будете в конечном итоге с NA. Кроме того, ID - номер строки.

Смежные вопросы