【问题标题】:Relative and cumulative percentages for levels of an ordered factor variable in RR中有序因子变量水平的相对和累积百分比
【发布时间】:2014-04-12 19:03:18
【问题描述】:

标题说明了一切。我在互联网上搜索了很多,但我无法找到答案。

这个主题"Make Frequency Histogram for Factor Variables" 完全符合我的需要,但用于绘图而不是用于表格。我有一个有序因子变量,我需要计算每个级别的相对百分比和累积百分比,就好像它是一个数值一样。我想计算百分比并将它们保存在单独的表中。 有什么建议? 先感谢您。

【问题讨论】:

    标签: r frequency r-factor


    【解决方案1】:

    这是你的意思吗:

    X <- sample(LETTERS[1:5],1000,replace=T)
    X <- factor(X, ordered=T)
    prop.table(table(X))
    # X
    #     A     B     C     D     E 
    # 0.210 0.187 0.180 0.222 0.201
    
    cumsum(prop.table(table(X)))
    #     A     B     C     D     E 
    # 0.210 0.397 0.577 0.799 1.000
    

    这基本上只是@Roland 对您引用的问题的回答??

    编辑(回应 OP 的评论)

    Y <- table(X)
    str(Y)
    #  'table' int [1:5(1d)] 205 191 200 183 221
    #  - attr(*, "dimnames")=List of 1
    #   ..$ X: chr [1:5] "A" "B" "C" "D" ...
    Z <- c(table(X))
    str(Z)
    #  Named int [1:5] 205 191 200 183 221
    #  - attr(*, "names")= chr [1:5] "A" "B" "C" "D" ...
    

    所以Y 属于“表”类,而Z 是命名整数向量。主要区别在于各种 R 函数处理不同类的方式。试试plot(Y)plot(Z)data.frame(Y)data.frame(Z)。但是请注意,(例如)sum(Y)sum(Z) 返回相同的内容。

    【讨论】:

    • 是的,这正是我的意思,谢谢!您知道是否可以将 table() 中的计数/频率导出到向量中并用于进一步计算?
    【解决方案2】:

    试试 fdth 包:

    library(fdth)
    set.seed(2019)
    X <- sample(LETTERS[1:5],
                1000,
                replace=T)
    
    X <- factor(X,
                ordered=T)
    
    tb <- fdt_cat(X)
    summary(tb)
    # Category   f   rf rf(%)   cf cf(%)
    #        B 223 0.22  22.3  223  22.3
    #        A 210 0.21  21.0  433  43.3
    #        C 191 0.19  19.1  624  62.4
    #        D 188 0.19  18.8  812  81.2
    #        E 188 0.19  18.8 1000 100.0
    

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多