如何在data.table中按列生成正值计数

时间:2016-03-07 05:38:39

标签: r data.table

我有一些数据表,包含多个列和数千行。 我的数据类似于:

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])

1 个答案:

答案 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