从数据帧获取另一个值
|
我是R编程的新手,并且刚刚开始学习它,因此,请您帮助我。
我有2个数据框:
the first(df1):
V1 V2
A A
A B
A C
B A
B B
B C
etc
第二个(df2):
V1 Va Vb
A 12 23
B 15 53
C 321 543
D 54 325
etc..
使用此代码生成示例数据。
df1 <- data.frame(
V1 = rep(LETTERS[1:2], each = 3L),
V2 = rep.int(LETTERS[1:3], 2L)
)
dfr2 <- data.frame(
Va = c(12, 15, 312, 54),
Vb = c(23, 53, 543, 325)
)
我需要从df2中提取Va和Vb并将它们放置在基于df1的V1和V2的df1中。
所以我想要这个输出:
df3:
V1 V2 Va1 Vb1 Va2 Vb2
A A 12 23 12 23
A B 12 23 15 23
A C 12 23 321 543
B A 15 23 12 23
B B 15 23 15 23
B C 15 23 321 543
希望可以在R中完成十二个for循环:S。
没有找到相关结果
已邀请:
3 个回复
抬澈帅沮
给
您将必须手动重命名列,因为您将获得多个具有相同名称的列。尽管从技术上讲,它可以在数据帧中使用,但以后可能会引起麻烦。您可以使用以下方法自动执行此操作:
编辑:对于大数据框,转换为矩阵会产生另一个巨大差异。必须注意不同变量类型的内在变化。加速是由于事实,即cbind和merge需要花费大量时间才能找出每个变量的正确类型。 具有以下数据和功能:
} 基准测试变为:
因此,与双重合并相比,速度提高了40倍以上,与使用数据帧相比,速度提高了10倍以上。
粱委教
得到想要的东西。默认情况下,“ 10”查找要加入的通用列名。在第二个合并中,我们将指定要合并的列:
亥套惟间连
现在,使用
包中的
和
函数以及
包中的管道运算符,我认为您可以节省很多击键。
也可以使用一次合并而不是两次合并来完成此操作,但是我想看看每一步都在进行什么。