r语言:如何根据另一个数据框在数据框中创建新列?

时间:2015-11-01 19:46:59

标签: r

Newbie使用R,并想知道如何根据来自另一个数据框的数据在数据框中创建新列。假设我有2个数据框,通过字母和#34; a"," b"和" c"在df1 col2df2 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,但它无法正常工作。

注意:我只想在df2df添加一列,如上所示(例如,不是df2中的所有列)。

2 个答案:

答案 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