R 如何基于colMeans对数据帧进行子集
我有一个如下的数据帧R 如何基于colMeans对数据帧进行子集,r,R,我有一个如下的数据帧 Me You They Him She 1 4 6 3 233 82 0 2 4 122 98 2 5 2 99 我想得到一个新的数据帧,它只包含colMeans大于30的列,因此结果应该如下所示 Me She 1 233 82 122 98 99 我试过类似的东西 dfNew<-subset(df,col
Me You They Him She
1 4 6 3 233
82 0 2 4 122
98 2 5 2 99
我想得到一个新的数据帧,它只包含colMeans大于30的列,因此结果应该如下所示
Me She
1 233
82 122
98 99
我试过类似的东西
dfNew<-subset(df,colMeans(df[, 1:ncol(df)]>30))
显然我不知道我在做什么 试试这个:
df[,colMeans(df)>30]
我想这是你正在寻找的东西 这一步只是我创建您的数据
Me <- c(1,82,98)
You <- c(4,0,2)
They <- c(6,5,5)
Him <- c(3,4,2)
She <- c(233,122,99)
df <- as.data.frame(cbind(Me, You, They, Him, She))
您可以尝试使用
dfNew30),]
而不是不提供所需输出的。我并不真正理解输出,但它并不正确您的示例中有一个输入错误,@HubertL复制了它,正如您可能希望colMeans(df[,1:ncol(df)])>30)
(注意移动的结束括号)。否则,数据帧将转换为逻辑(通过将每个值与30进行比较),然后取colMeans
,因此它们将介于0和1之间。此调用还选择列,而子集
按行进行子集。。。总而言之,请参见@HubertL的答案以了解正确的方法:)
Me <- c(1,82,98)
You <- c(4,0,2)
They <- c(6,5,5)
Him <- c(3,4,2)
She <- c(233,122,99)
df <- as.data.frame(cbind(Me, You, They, Him, She))
df[, sapply(df, mean) > 60]