R中有序因子变量水平的相对和累积百分比

问题描述 投票:0回答:2

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

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

r frequency r-factor
2个回答
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属于类“table”,而Z是一个命名整数向量。主要区别在于各种R函数处理不同类的方式。尝试plot(Y)plot(Z)data.frame(Y)data.frame(Z)。但请注意,(例如)sum(Y)sum(Z)返回相同的内容。


0
投票

试试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
© www.soinside.com 2019 - 2024. All rights reserved.