我有一些数据表,包含多个列和数千行。 我的数据类似于:
iteration V1 V2 V3 V4
1 -2 3 -4 1
2 -2 3 -3 4
3 -2 3 7 -8
4 -2 3 -4 2
5 -2 3 -4 -3
我一直试图弄清楚如何计算每列中正值的计数,以及正数与一列中所有计数的比例。
这看起来相当简单,但我无法弄清楚如何输出一个按列计数的data.table。
我可以通过结合以下一系列陈述来做到这一点,但必须有一个更好的方法 - 对疲惫的头脑有任何建议吗?
nrow(dat[v2>=0])
答案 0 :(得分:0)
假设您的数据框名为df
:
df <- data.frame('V1'=c(-2, -2, -2, -2, -2), 'V2'=c(3, 3, 3, 3, 3), 'V3'=c(-4, -3, 7, -4, -4), 'V4'=c(1, 4, -8, 2, -3))
您可以将行数定义为:
nRows <- dim(df)[1]
然后,您可以定义辅助功能:
calcStats <- function(x) {
pos <- sum(df[, x] > 0)
c("number of positives" = pos, "proportion of positives" = pos / nRows)
}
并获得结果:
result <- as.data.frame(Map(calcStats, colnames(df)))
V1 V2 V3 V4
number of positives 0 5 1.0 3.0
proportion of positives 0 1 0.2 0.6