【发布时间】:2016-03-01 21:30:09
【问题描述】:
我正在尝试根据特定列聚合 R 中的一些数据。 示例数据如下。
> d <- data.frame(POS=c(1,2,2,2,3,4,4,5), Dist=c(111,6,9,58,250,4,65,111),Read=c(1,2,6,6,25,1,8,11))
> print(d)
POS Dist Read
1 1 111 1
2 2 6 2
3 2 9 6
4 2 58 6
5 3 250 25
6 4 4 1
7 4 65 8
8 5 111 11
我想要做的是根据列计算跨行的平均值仅当距离列小于 100 时才读取。因此,在 POS 列下,我希望将第 1 行单独保留为第 1 组,然后计算第 2、3 和 4 行的平均值,第 5 行单独作为第 3 组,然后计算第 4 组的第 6 和 7 行的平均值(平均值 = 4.5)。
“真实”数据集没有 POS 列,并且长度 >24,000 行,所以我宁愿不确定哪些行应该手动平均。
【问题讨论】:
-
你可以试试
library(data.table) ; setDT(df)[, M := mean(W23540_02[Distance..2.1. < 100]), by = POS][is.na(M), M := as.double(W23540_02)],虽然我不知道你是怎么想出那个55.7的。