将分布应用于新样本集



我有一个数据帧dfu,它保存每个id(id属于一个teamteam有许多ids)的百分比样本,其中一堆属性prop1prop2等等是基于一些过去的研究观察到的 - 这被用作未来研究的参考表。现在有来自新实验的数据,它给出了一组新的ids。我需要通过使用dfu中的参考数据,找到每个team观察prop1prop2等的百分比样本。这可以通过计算dfi中每id的出现次数来完成,然后取按team分组的加权平均值 - 并非dfu中的所有 id 都可能存在,dfu中可能存在一个或多个 IDdfi中可能存在。dfu中不存在的 ID 可能会从加权平均值中排除,因为每个属性值都没有可用的 ID。

dfu <- data.frame(id=1:6, team=c('A',"B","C","A","A","C"), prop1=c(0.8,0.9,0.6,0.5,0.8,0.9), prop2=c(0.2,0.3,.3,.2,.2,.3))
> dfu
id team prop1 prop2
1    A   0.8   0.2
2    B   0.9   0.3
3    C   0.6   0.3
4    A   0.5   0.2
5    A   0.8   0.2
6    C   0.9   0.3
> 
> dfi <- data.frame(id=c(2  , 3  , 2  , 1  , 4  , 3  , 7))
> dfi
id
2
3
2
1
4
3
7

输出格式如下所示。例如,组Aprop1值将为(0.8*1 + 0.5*1)/2 = 0.65

team  prop1   prop2
A            
B    
C    

首选基本 R 方法,欢迎其他方法。列数可能很多。

我不知道如何使用base R来做到这一点。

使用data.table应该很容易。 让我们将您的数据帧转换为数据表。

library(data.table)
dfu <- data.frame(id=1:6, team=c('A',"B","C","A","A","C"), prop1=c(0.8,0.9,0.6,0.5,0.8,0.9), prop2=c(0.2,0.3,.3,.2,.2,.3))
dfi <- data.frame(id=c(2  , 3  , 2  , 1  , 4  , 3  , 7))
dfi <- data.table(dfi)
dfu <- data.table(dfu)

然后像

dfu[dfi,on="id"]
## > dfu[dfi,on="id"]                  
##    id team prop1 prop2
## 1:  2    B   0.9   0.3
## 2:  3    C   0.6   0.3
## 3:  2    B   0.9   0.3
## 4:  1    A   0.8   0.2
## 5:  4    A   0.5   0.2
## 6:  3    C   0.6   0.3
## 7:  7   NA    NA    NA

然后我们只需要按组执行平均值。事实上,我们可以像这样的一行

dfu[dfi,on="id"][,mean(prop1),team]
## > dfu[dfi,on="id"][,mean(prop1),team] 
##    team   V1
## 1:    B 0.90
## 2:    C 0.60
## 3:    A 0.65
## 4:   NA   NA

您可以通过合并 data.frame 并使用函数aggregate在 base R 中实现同样的事情。

从@DJJ的回答中得到提示。

dfu <- data.frame(id=1:6, team=c('A',"B","C","A","A","C"),
prop1=c(0.8,0.9,0.6,0.5,0.8,0.9), 
prop2=c(0.2,0.3,.3,.2,.2,.3))
dfi <- data.frame(id=c(2  , 3  , 2  , 1  , 4  , 3  , 7))

按 id 合并

> dfx <- merge(dfi, dfu, by="id")
> dfx
id team prop1 prop2
1  1    A   0.8   0.2
2  2    B   0.9   0.3
3  2    B   0.9   0.3
4  3    C   0.6   0.3
5  3    C   0.6   0.3
6  4    A   0.5   0.2

使用meanteam聚合prop1prop2

> aggregate(cbind(prop1, prop2) ~ team, dfx, mean)
team prop1 prop2
1    A  0.65   0.2
2    B  0.90   0.3
3    C  0.60   0.3

最新更新