【问题标题】:count of numeric values by column with data.table (R)使用 data.table (R) 按列计数数值
【发布时间】:2017-03-23 16:31:36
【问题描述】:
DC<-data.table(l=c(0,0,1,4,5),d=c(1,2,0,0,1),y=c(0,1,0,1,7))

你好, 如何使用 data.table 获取列中特定值的计数? 我尝试了以下方法:

DC[, lapply(.SD, function(x) length(which(DC==0)))] 

但这会返回整个数据集中的零计数,而不是按列索引。那么,如何按列索引呢? 谢谢

【问题讨论】:

  • DC[, lapply(.SD, function(x) sum( x == 0 ) ]
  • apply( DC == 0, 2, sum )
  • colSums(DC == 0)
  • 您的代码:DC[, lapply(.SD, function(x) length(which(x==0)))]

标签: r data.table


【解决方案1】:

这个问题的表述不是很好,但我认为@Sathish 在 cmets 中回答得很好。

让我们在这里再写一次:对我来说colSums(DC == 0) 是问题的一个答案。
所有功劳归@Sathish。很有帮助。

【讨论】:

    【解决方案2】:

    如果我理解您的问题,您希望对构成给定数据表列的值进行频率计数。如果这是真的,假设您想在您提供的数据表的 d 列上这样做:

    > DC <- data.table(l=c(0,0,1,4,5), d=c(1,2,0,0,1), y=c(0,1,0,1,7))
    > DC[, .N, by = d]
       d N
    1: 1 2
    2: 2 1
    3: 0 2
    

    然后,如果您想要 d 中特定值的计数,您可以通过访问上述聚合的相应行来实现,如下所示:

    > DC[, .N, by = d][d == 0, N]
    [1] 2
    

    【讨论】:

    • 我可能不是很清楚。之前的评论解决了我的问题。我想为每列应用一个零计数,但输入的是 DC==0 而不是 x==0。顺便感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多