【问题标题】:calculate the number of values in a column as a percentage using apply使用 apply 计算列中值的数量百分比
【发布时间】:2022-11-18 16:59:36
【问题描述】:

我的数据框:

data <-structure(list(col1 = c(1L, 2L, 2L, 4L, 5L, 6L, 7L, 8L, 9L), 
    col2 = c(NA, 5L, 6L, 7L, 8L, NA, 10L, 11L, 12L), col3 = c(6L, 
    7L, 8L, 9L, 10L, 11L, 12L, 13L, NA), col4 = c(9L, 10L, NA, 
    12L, 15L, 14L, 15L, 16L, 17L), col5 = c(12L, 13L, 14L, 15L, 
    16L, 17L, 18L, NA, 20L), GROUP = c(3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L), col6 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L), 
    col7 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), col8 = c(1L, 
    1L, 1L, 4L, 5L, 6L, 7L, 8L, 9L), col9 = 10:18), class = "data.frame", row.names = c(NA, 
-9L))

我想从列中输出每个值并计算它的数量以及它在 col9 和 col10 中的百分比

我这样使用apply

k <- paste(apply(data[,c(9,10)], 2,table),apply(data[,c(9,10)], 2, prop.table))

并将它们连接成一个单元格

k <- apply(k,2,paste,collapse="\n")

但结果我得到了一个错误 应用(k,2,粘贴,折叠=“\ n”):dim(X) 必须有正长度

【问题讨论】:

    标签: r apply


    【解决方案1】:

    由于每个列都有两列,因此您应该能够使用mapplyprop.table 已弃用,请改用proportions,我们不希望他们获得simplifyed。不过,不确定您想要的输出。

    k <- mapply(paste, apply(data[, c(9, 10)], 2, table),
                apply(data[, c(9, 10)], 2, proportions, simplify=F))
    k
    #      col8                   col9                  
    # [1,] "3 0.0238095238095238" "1 0.0793650793650794"
    # [2,] "1 0.0238095238095238" "1 0.0873015873015873"
    # [3,] "1 0.0238095238095238" "1 0.0952380952380952"
    # [4,] "1 0.0952380952380952" "1 0.103174603174603" 
    # [5,] "1 0.119047619047619"  "1 0.111111111111111" 
    # [6,] "1 0.142857142857143"  "1 0.119047619047619" 
    # [7,] "1 0.166666666666667"  "1 0.126984126984127" 
    # [8,] "3 0.19047619047619"   "1 0.134920634920635" 
    # [9,] "1 0.214285714285714"  "1 0.142857142857143" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 2013-11-15
      • 1970-01-01
      • 2015-10-11
      • 2020-06-25
      相关资源
      最近更新 更多