【问题标题】:Count of states in a particular column in a dataframe in RR中数据框中特定列中的状态计数
【发布时间】:2014-01-19 18:02:50
【问题描述】:

我有一个数据框 --> “测试”

> test
     V1 V2
1 INS01  1
2 INS01  1
3 INS02  1
4 INS03  2
5 INS03  3
6 INS04  4
> class(test)
[1] "data.frame"

我想要计数“INS01”、“INS02”、“INS03”、“INS04”。我尝试使用“by”,但它没有给我想要的输出。

> agg <- by(test, test$V1, function(x) length(x))
> agg
test$V1: INS01
[1] 2
------------------------------------------------------------ 
test$V1: INS02
[1] 2
------------------------------------------------------------ 
test$V1: INS03
[1] 2
------------------------------------------------------------ 
test$V1: INS04
[1] 2

我被困在这里。任何帮助表示赞赏。谢谢

【问题讨论】:

    标签: r coding-style aggregation lapply sapply


    【解决方案1】:

    使用table()

    让我们制作测试数据框(请在下一个问题中提供类似的代码,请参阅here

    zz <- textConnection("
    V1 V2
    1 INS01  1
    2 INS01  1
    3 INS02  1
    4 INS03  2
    5 INS03  3
    6 INS04  4
    ")
    Data <- read.table(zz)
    

    然后:

    > table(Data$V1)
    
    INS01 INS02 INS03 INS04 
        2     1     2     1 
    

    【讨论】:

      【解决方案2】:

      将 V1 列转换为 factor 并使用默认的 factor summary 方法,该方法返回频率。

      > summary(as.factor(test$V1))
      INS01 INS02 INS03 INS04
          2     1     2     1
      

      【讨论】:

      • 谢谢... 这是最简单的解决方案。我在苦苦思索:D
      • err...这是一个有用的解决方案,不是最简单的:-)
      • 我在这里必须同意@JorisMeys,但话又说回来,我没有问这个问题:-)
      【解决方案3】:

      Joris 分享了我这样做的方式,但我想我会分享你的答案错误的原因:

      data.frame 上使用length 告诉您data.frame 中有多少列,而不是结果行数(这就是您实际需要的)。

      例子:

      x <- data.frame(matrix(1:100, ncol = 25))
      length(x)
      # [1] 25
      

      如果您想使用by,请改用nrow

      by(test, test$V1, function(x) nrow(x))
      # test$V1: INS01
      # [1] 2
      # --------------------------------------------------------------------------- 
      # test$V1: INS02
      # [1] 1
      # --------------------------------------------------------------------------- 
      # test$V1: INS03
      # [1] 2
      # --------------------------------------------------------------------------- 
      # test$V1: INS04
      # [1] 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-06
        • 2023-01-18
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 2017-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多