【发布时间】:2014-08-09 12:04:10
【问题描述】:
Here 讨论了向量 t 的平均值和中位数的计算问题,对于向量 y 的每个值(从 1 到 4),其中 x = 1, z = 1,使用R中的aggregate函数。
x y z t
1 1 1 10
1 0 1 15
2 NA 1 14
2 3 0 15
2 2 1 17
2 1 NA 19
3 4 2 18
3 0 2 NA
3 2 2 45
4 3 2 NA
4 1 3 59
5 0 3 0
5 4 3 45
5 4 4 74
5 1 4 86
但是我如何才能为向量 x 的每个值(从 1 到 5)计算 (mean(y)+mean(z))/(mean(z)-mean(t)) 而不对任何向量中的值 0 和 NA 进行计算?例如,在向量 y 中,第三个值是 0,因此不应使用每个向量 (y,z,t) 中的第三个数字。结果第三行(x = 3)应该是NA。
这里是计算y,z和t均值的代码,需要加上计算(mean(y)+mean(z))/(mean(z)-mean(t))的公式:
data <- data.table(dataframe)
bar <- data[,.N,by=x]
foo <- data[ ,list(mean.y =mean(y, na.rm = T),
mean.z=mean(z, na.rm = T),
mean.t=mean(t,na.rm = T)),
by=x]
在此计算代码中表示使用所有行,但对于计算(mean(y)+mean(z))/(mean(z)-mean(t)),不应使用任何行,其中 y 或 z 或 t 等于零或NA。
【问题讨论】:
-
这是 Cross Validated 的 OT,因为它并没有真正解决 统计 问题。我很欣赏您正在进行数据分析,但您的问题的解决方案仅限于简单地找到正确的咒语以使 R 做您想做的事。正如我所提到的,这些问题在这里是过时的,但这适合Stack Overflow。
标签: r data.table aggregation