更好地形成子集数据的平均值

时间:2013-07-13 12:49:25

标签: r dataframe

我有一个数据集:

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

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

我的尝试:

     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)

有什么直接的方法可以找到Y的平均值 20℃ X <50而不修改原始数据帧,即没有子集吗?

2 个答案:

答案 0 :(得分:7)

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

mean(data$Y[data$X > 20 & data$X < 50])
# [1] 18

答案 1 :(得分:4)

或者,使用data.table作为其语法糖:

 library(data.table)
 DT <- data.table(data)
 DT[X>20 & X <50,mean(Y)]
 [1] 18