【发布时间】:2016-03-04 00:05:14
【问题描述】:
数据和上下文优先:有问题的数据是
set.seed(123)
df1 <- data.frame(A = rep(1, 4), B = c(2, 6, 4, 4), D = c(0.1, 0.2, 0.3, 0.4))
df2 <- data.frame(A = rep(1, 4), C = c(2, 4, 6, 4), D = c(0.5, 0.6, 0.7, 0.8))
所以我们有
> df1
A B D
1 1 2 0.1
2 1 6 0.2
3 1 4 0.3
4 1 4 0.4
和
> df2
A C D
1 1 2 0.5
2 1 4 0.6
3 1 6 0.7
4 1 4 0.8
现在,当做时
merge(df1, df2, by.x = c("A", "B"), by.y = c("A", "C"))
一个得到
A B D.x D.y
1 1 2 0.1 0.5
2 1 4 0.3 0.6
3 1 4 0.3 0.8
4 1 4 0.4 0.6
5 1 4 0.4 0.8
6 1 6 0.2 0.7
因为 (A,B) 和 (A,C) 值的组合不明确。
实际问题:如何通过将 D.x 和 D.y 随机分配给 (A,B) 来解决这个问题,例如获得同样的可能性
A B D.x D.y
1 1 2 0.1 0.5
2 1 4 0.3 0.6
5 1 4 0.4 0.8
6 1 6 0.2 0.7
和
A B D.x D.y
1 1 2 0.1 0.5
3 1 4 0.3 0.8
4 1 4 0.4 0.6
6 1 6 0.2 0.7
作为合并的结果?
【问题讨论】:
标签: r merge duplicates