【发布时间】:2017-02-08 05:17:01
【问题描述】:
我有两个如下所示的数据框。
dfu 是一个查找表,用于查找基于过去研究的每个id 的属性存在概率 - 存储为prop1、prop2 等等。
dfi 包含在实验中发现的一堆 id - 并非dfu 中的所有 id 都可能存在,dfu 中不存在的一个或多个 id 可能存在于 dfi 中
> set.seed(100)
> dfu <- data.frame(id=rep(1:6,1, replace = FALSE), prop1=sample(0:10 / 10,6, replace=TRUE), prop2=sample(0:10 / 10,6 , replace = TRUE) )
> dfu
id prop1 prop2
1 1 0.8 0.3
2 2 0.4 0.4
3 3 0.6 0.8
4 4 0.1 0.7
5 5 0.6 0.2
6 6 0.9 0.3
> dfi <- data.frame(id = c(sample(1:3, 6, replace = TRUE),7))
> dfi
id
1 2
2 3
3 2
4 1
5 2
6 3
7 7
对于dfu,给定dfi,我需要在每个属性的基础上计算dfi 中整个ID 人口的每个属性的存在。这可以通过计算dfi 中每个id 的出现次数来完成,然后对每个属性进行加权平均。 dfu 中不存在的 id 可能会从加权平均值中排除,因为它们没有可用的每个属性值。
所以对于prop1,它就像(0.8*1 + 0.4*3 + 0.6*2)/(1 + 3 + 2) = 0.53 - 这里使用的1,3,2 分别是在dfi 中出现的id 1、2 和3。
输出如下所示
prop1 prop2
0.5333 0.5167
首选基本 R 方法,欢迎使用其他方法。列数可能很多。
【问题讨论】:
标签: r