我的数据框有以下几列:
df1 <- data.frame(A = c(1,2,4), B=c(1,3,1), C=c(1,1,3))
Run Code Online (Sandbox Code Playgroud)
我有两个条件来获得A列的平均值.
我知道我可以使用过滤器来剪切数据帧,使列B = 1.但是,当我希望将列B视为1和3范围内的范围时,我不确定该怎么做.
是否有更智能的方法来获取列的平均值而不将数据帧首先缩小为更小的尺寸?
您可以在同一个调用中进行子集化,mean如下所示:
with(df1, mean(A[B == 1]))
with(df1, mean(B[A > 1 & A < 3]))
Run Code Online (Sandbox Code Playgroud)
您可以将两个逻辑测试结合起来&。所以你可以将B > 1测试与B < 3:
# Condition A:
mean(df1$A[df1$B==1])
# Condition B:
mean(df1$B[df1$A>1 & df1$A<3])
Run Code Online (Sandbox Code Playgroud)