0

我有一个数据集:

    X     Y
   20     12
   24     11
   12      7
   10      2
   41     24
   13      9
   50     17
    4     12
   17     12
   35     19

现在我必须在 20 < X < 50 时找到 Y 的平均值。

我的尝试:

     data <- data.frame(X=c(20,24,12,10,41,13,50,4,17,35),
                        Y=c(12,11,7,2,24,9,17,12,12,19))
     sub <- subset(data,X>20 & X<50)
     mean(sub$Y)

当 20< X<50 时,有没有直接的方法来找到 Y 的平均值而不修改原始数据框,即没有子集?

4

2 回答 2

7

不确定“没有子集”是什么意思。在某些时候,您将不得不以某种方式对数据进行子集化,因为您正在寻找数据子集的平均值。如果您的意思是“不要调用子集函数并保存数据的另一个副本”,您可以这样做

mean(data$Y[data$X > 20 & data$X < 50])
# [1] 18
于 2013-07-13T13:14:03.470 回答
4

或者,使用data.table它的语法糖:

 library(data.table)
 DT <- data.table(data)
 DT[X>20 & X <50,mean(Y)]
 [1] 18
于 2013-07-13T14:21:00.797 回答