2016-08-12 4 views
-1

У меня есть два кадра данных. Первые выглядит как этотСоответствующие элементы двух кадров данных в R

name 
1 a 
2 b 
3 c 
4 d 
5 f 

и второй, как этот

name value 
1 b  3 
2 d  4 
3 f  5 
4 a  1 
5 c  2 
6 k  7 
7 m  6 

Теперь я хочу, чтобы добавить второй столбец на первый кадр данных, который содержит значение элементов, взятых из второго списка. Это должно выглядеть так:

 name value 
    1 a  1 
    2 b  3 
    3 c  2 
    4 d  4 
    5 f  5 

Может ли кто-нибудь мне помочь?

+0

Другой вариант 'setDT (df2) [df1, на =«имя»]' 'из data.table' – akrun

+0

Если data.frames содержат больше столбцов, чем те, в данном примере, и вы хотите только добавьте один столбец в 'df1', описанный в сообщении, без слияния целых data.frames, вы можете попробовать' df1 $ value <- df2 $ value [match (df1 $ name, df2 $ name)] '. – RHertel

ответ

1

вы можете использовать merge для этого. В случае, если ваш первый кадр данных называется df1 и второй один df2:

merge(df1, df2, by='name') 
1

То, что вы хотите сделать, это внутреннее соединение. Вы можете попробовать с пакетом dplyr.

library(dplyr) 
x <- data.frame(name = c("a", "b", "c", "d", "f"), stringsAsFactors = FALSE) 
y <- data.frame(name = c("b", "d", "f", "a", "c", "k", "m"), 
       value = c(3, 4, 5, 1, 2, 7, 6), 
       stringsAsFactors = FALSE) 

joined <- dplyr::inner_join(x, y, by = "name") 
Смежные вопросы