R 将一个数据帧中多列的值匹配到第二个数据帧中的键并创建列
我有两个数据帧。一个df1如下所示:R 将一个数据帧中多列的值匹配到第二个数据帧中的键并创建列,r,merge,match,R,Merge,Match,我有两个数据帧。一个df1如下所示: var.1 var.2 var.3 var.4 1 7 9 1 2 2 4 6 9 7 3 2 NA NA NA var.a var.b var.c var.d 1 1 b c d 2 2 f g h 3 4 j k l 3 7 j k
var.1 var.2 var.3 var.4
1 7 9 1 2
2 4 6 9 7
3 2 NA NA NA
var.a var.b var.c var.d
1 1 b c d
2 2 f g h
3 4 j k l
3 7 j k z
...
var.1 var1.b var1.c var1.d ... var.4 var4.b var4.c var4.d
1 7 j k z 2 f g h
2 4 j k l 7 j k z
3 2 f g h NA NA NA NA
另一个df2如下所示:
var.1 var.2 var.3 var.4
1 7 9 1 2
2 4 6 9 7
3 2 NA NA NA
var.a var.b var.c var.d
1 1 b c d
2 2 f g h
3 4 j k l
3 7 j k z
...
var.1 var1.b var1.c var1.d ... var.4 var4.b var4.c var4.d
1 7 j k z 2 f g h
2 4 j k l 7 j k z
3 2 f g h NA NA NA NA
df2的a变量中df1的1-4变量中列出的所有值
我想在df1中列出的所有列中匹配df2中的var.a,然后使用新的/组合的列名将这些列添加到df1中。例如,它看起来像这样:
var.1 var.2 var.3 var.4
1 7 9 1 2
2 4 6 9 7
3 2 NA NA NA
var.a var.b var.c var.d
1 1 b c d
2 2 f g h
3 4 j k l
3 7 j k z
...
var.1 var1.b var1.c var1.d ... var.4 var4.b var4.c var4.d
1 7 j k z 2 f g h
2 4 j k l 7 j k z
3 2 f g h NA NA NA NA
提前谢谢 这是一个整洁的解决方案。首先,我定义数据帧
df1%
gathervariable,值,-rowname%>%
左接缝f2,by=cvalue=var.a%>%
gatherfoo,bar,-variable,-rowname%>%
unitegoop,变量,foo%>%
spreadgoop,酒吧%>%
选择行名
>警告:度量变量的属性不相同;
>它们将被丢弃
这就给了,
>var.1_值var.1_值var.b var.1_值var.c var.1_值var.d var.2_值var.b
>1 7 j k z 9
>2 4 j k l 6
>3.2 f g h
>var.2_var.c var.2_var.d var.3_var.b var.3_var.c var.3_var.d
>1 b c d
> 2 9
> 3
>风险值4风险值4风险值b风险值4风险值c风险值4风险值d
>1 2 f g h
>2 7 j k z
> 3
由v0.3.0于2019-05-30创建
这有点复杂,但我会尽力解释
首先,我将行号转换为列,因为这将帮助我在最后将数据放回一起。
df1的格式从宽到长。
我分别基于var.a和var.1(现在称为value)将df2连接到df1。
我又从宽到长。
我将每个数据帧中的变量名组合成一个变量。
最后,我从长格式到宽格式,这是行号方便的地方,并删除行号。