【问题标题】:Display missing values with Crosstable()使用 Crosstable() 显示缺失值
【发布时间】:2021-05-10 08:20:06
【问题描述】:
我正在尝试使用CrossTable() 显示频率表。
我希望它显示与以下内容相同的结果:
table(mydata$union, exclude=NULL)
我找不到任何关于此的文档,但我只有:
CrossTable(mydata$union,digits=4)
【问题讨论】:
标签:
r
missing-data
crosstab
【解决方案1】:
似乎gmodels::CrossTable函数不处理R类型NAs。它似乎深受 SPSS 和 SAS 的启发,它们对NAs 有不同的约定。保留或删除任何未使用的因子水平的 missing.include 参数似乎也不是很有帮助。
如果您来自 SPSS 背景,我建议您执行与您在 SPSS 中所做的类似的操作:将 NAs 替换为常规值 9999。您可以在整个数据框或特定列上运行 tidyr::replace_na .这是一个可重现的小例子:
library(gmodels)
library(tidyr)
data <- mtcars
data$am[c(3, 7, 10)] <- NA # replace some values with NAs in am column for example purposes
data$am <- tidyr::replace_na(data$am, 9999) # replace NAs with 9999 like would be the case in SPSS
gmodels::CrossTable(data$am, digits = 4, format = "SPSS")
#>
#> Cell Contents
#> |-------------------------|
#> | Count |
#> | Row Percent |
#> |-------------------------|
#>
#> Total Observations in Table: 32
#>
#> | 0 | 1 | 9999 |
#> |-----------|-----------|-----------|
#> | 17 | 12 | 3 |
#> | 53.1250% | 37.5000% | 9.3750% |
#> |-----------|-----------|-----------|
#>
#>
由reprex package (v0.3.0) 于 2021-02-06 创建