我读到某处可以在R中使用prop.table(table())以获得比例表。但是,我为此获得的结果与手动计算有所不同(即查看table()然后除以NROW()。)我确定我可能在计算中犯了手动错误,但是我想确保使用prop.table(table())在逻辑上没有问题。
我正在使用按性别分类的调查数据,已将每种性别分为两个单独的数据集(即,女性<-data [data $ gender == 1]。我正在尝试识别性别差异,因此我想查看回复的细分百分比并进行比较。
scoreWomen <- c('a', 'a', 'a', 'b', 'c', 'c', 'd', 'd', 'd', 'd', 'd', 'e', 'e')
scoreMen <- c('a', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'd', 'e')
prop.table(table(scoreWomen))
#a b c d e
#0.23076923 0.07692308 0.15384615 0.38461538 0.15384615
table(scoreWomen)
#a b c d e
#3 1 2 5 2
NROW(scoreWomen)
#13
在小规模测试中,与上面的代码一样,手动计算与prop.table(table())的结果相同。但是,当我将它们与实际数据一起使用时,它们却大不相同,并且相差几个百分点。为什么会这样呢?是否对prop.table()或NROW()有误解?
答案 0 :(得分:0)
如果数据集中有NA
个元素,则值可能会有所不同
scoreWomen <- c(scoreWomen, NA)
prop.table(table(scoreWomen))
#scoreWomen
# a b c d e
#0.23076923 0.07692308 0.15384615 0.38461538 0.15384615
table(scoreWomen)/NROW(scoreWomen)
#scoreWomen
# a b c d e
#0.21428571 0.07142857 0.14285714 0.35714286 0.14285714
但是,可以通过在useNA = 'always'
中指定table
来阻止它
prop.table(table(scoreWomen, useNA = 'always'))
#scoreWomen
# a b c d e <NA>
#0.21428571 0.07142857 0.14285714 0.35714286 0.14285714 0.07142857
现在,它与NROW
的计算值匹配,然后从表输出中删除<NA>
元素
因此,这完全取决于是否需要通过删除NA
元素来进行计算。 NROW
不能区分NA