我有一个数据集:
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而不修改原始数据帧,即没有子集吗?
答案 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