【发布时间】:2017-08-23 07:03:47
【问题描述】:
我有两个数据框如下:
df1<-data.frame(st=c(1,2,3,4),v1=c(12,14,15,75),v2=c(43,32,12,18))
df1
st v1 v2
1 1 12 43
2 2 14 32
3 3 15 12
4 4 75 18
df2<-data.frame(st=c(1,2,3,4),v1=c(12,24,35,18),v2=c(48,32,121,82),v3=c(53,11,12,75))
df2
st v1 v2 v3
1 1 12 48 53
2 2 24 32 11
3 3 35 121 12
4 4 18 82 75
我想要的是在“st”列级别匹配两个数据帧,即对于 df1 中的 st = 1,v1 和 v2 的相应值是 12 和 43。因此,如果 df2 中的 st=1,如果有变量包含这些值,然后我想选择 st,以及 df2 中的那些值。
所以对于上面的例子,输出将是
St values
1 12(coming from v1 in df2)
2 32(coming from v2 in df2)
3 12(coming from v3 in df2)
4 18 75(coming from v1 & v3 in df2)
需要注意的重要一点是,在输出数据框中,所选变量的顺序应与 df2 的顺序相同,如您所见,对于 st = 4,df1 中的值是 75 & 18,与 st = 匹配2,但输出仍然是 18,然后是 75,这是 df2 中的顺序。 df2 中的变量也总是大于 df1。
【问题讨论】: