Newbie使用R,并想知道如何根据来自另一个数据框的数据在数据框中创建新列。假设我有2个数据框,通过字母和#34; a"," b"和" c"在df1
col2
和df2
col1
中,如下所示:
> col1<-c(1, 2, 3, 4)
> col2<-c("a","b","c","c")
> df1<-data.frame(col1, col2)
> df1
col1 col2
1 1 a
2 2 b
3 3 c
4 4 c
> c1<-c("a","b","c")
> c2<-c("Jim","Sue","Bob")
> c3<-c("abc","def","ghi")
> df2<-data.frame(c1,c2,c3)
> df2
c1 c2 c3
1 a Jim abc
2 b Sue def
3 c Bob ghi
我想在df1
添加一个列3,根据&#34; a&#34;,&#34; b&#34;或&#34; c&#34的值添加用户名;在df1
。也就是说,如何使用R?
> df1
col1 col2 col3
1 1 a Jim
2 2 b Sue
3 3 c Bob
4 4 c Bob
我已经尝试了df1["col3"]<-df2[df1$col2==df2$c1]$c2
,但它无法正常工作。
注意:我只想在df2
到df
添加一列,如上所示(例如,不是df2
中的所有列)。
答案 0 :(得分:1)
您需要合并()。
# this merges the two data frames and rebinds the result to df1
df1 <- merge(df1, df2, by.x = "col2", by.y = "c1")
# This renames the "c1" column to "col3"
names(df1) <- c("col2", "col1", "col3")
# This rearranges the columns in the right order
df1 <- df1[,c(2,1,3)]
结果是:
col1 col2 col3
1 1 a Jim
2 2 b Sue
3 3 c Bob
4 4 c Bob
键入?merge以查看其工作原理。
答案 1 :(得分:1)
> merge(df1, df2, by.x = "col2", by.y = "c1")
col2 col1 c2
1 a 1 Jim
2 b 2 Sue
3 c 3 Bob
4 c 4 Bob