我有一个大数据框,其中包含0到1之间的数字,为此,我试图为每列计算0.4到0.6之间的值的数目。我已经成功地计算出均值,中位数等,使用apply输出包含列均值的向量:
column_mean <- apply(x, 2, mean, na.rm=TRUE)
但是我还不太清楚如何修改apply()
以计算落在范围内的值的数量。我在想类似的事情,但是在所有列中都如此:
column_counts <- apply(x, 2, sum(x$c1 > 0.4 & x$c1 < 0.6), na.rm=TRUE)
感谢您的帮助!
答案 0 :(得分:0)
此答案是否正确
> df <- data.frame(Col1 = rnorm(10),
+ Col2 = rnorm(10),
+ Col3 = rnorm(10))
> df
Col1 Col2 Col3
1 0.73804784 1.7342752 -1.0906748
2 1.65272822 -1.2936601 0.4721306
3 0.41988220 0.1148715 -0.3010973
4 0.19199975 1.2164140 0.7646785
5 0.09016752 -1.7179874 -0.5046282
6 -1.59440039 1.2948078 -0.3152287
7 -0.74238335 -0.6169977 0.8392895
8 0.28572911 0.8212279 0.5394922
9 -1.71357200 2.0856380 0.3221748
10 -0.29211236 0.5290523 0.4206429
> sapply(df, function(x) sum(x > 0.4 & x < 0.6))
Col1 Col2 Col3
1 1 3
>
答案 1 :(得分:0)
进行自定义功能:
count_interval <- function(x) {
return(length(x[!is.na(x) & x>0.4 & x<0.6]))
}
,然后像以前一样使用它:
column_counts <- apply(x, 2, count_interval)
答案 2 :(得分:0)
首先只是一个提示,您应该提供一个示例供我们使用,请选中https://stackoverflow.com/help/minimal-reproducible-example。
您可以创建一个进行特定测试的函数,然后将其传递以应用:
test = function(a){sum(a>=0.4 & a<=0.6)}
column_counts = apply(x, 2, test)