Here讨论了向量 t 的均值和中位数的计算问题,对于向量 y (从1到4)的每个值,其中< em> 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 中,第3个值为0,因此不应使用每个向量中的第3个数字( 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
。
答案 0 :(得分:0)
您可以先对数据进行分组。
subdata <- data[which(data$y != 0 & data$z !=0 & data$t !=0 &
!is.na(data$y) & !is.na(data$z) & !is.na(data$t)),]
现在您拥有原始数据框的子集,其中不包含0或NA的行。然后,您可以通过x应用您的用户定义函数来聚合“subdata”。