【发布时间】:2016-11-08 19:53:26
【问题描述】:
如何在 R 中合并键在一个数据集的列和另一个数据集的行上的数据集?
示例数据:
group = c("a", "b", "c", "c")
id1 = c(1, 0, 0, 0)
id2 = c(0, 1, 0, 1)
id3 = c(0, 0, 1, 0)
df1 = data.frame(group,id1, id2, id3)
df1
id = c("id1", "id2", "id3")
iv1 = c(2, 3, 3)
iv2 = c(3, 2, 3)
df2 = data.frame(id, iv1, iv2)
df2
我喜欢按 id 合并这两个数据集。我可以通过 ifelse 来实现:
df1$iv1 = ifelse(df1$id1 == 1, 2, 3)
df1$iv2 = ifelse(df1$id2 == 1, 2, 3)
结果:
group id1 id2 id3 iv1 iv2
1 a 1 0 0 2 3
2 b 0 1 0 3 2
3 c 0 0 1 3 3
4 c 0 1 0 3 2
如果说我有 1000 个变量要合并,那么 ifelse 方法会很乏味。有没有更有效的方法来合并这些数据集?
【问题讨论】:
-
df1中的ID列是互斥的吗?您是否会遇到 id1 = 1 且 id2 = 1 的行的情况?如果是这样,预期的输出是什么?