首页 > 解决方案 > 使用 Crosstable() 显示缺失值

问题描述

我正在尝试使用显示频率表CrossTable()

我希望它显示与以下相同的结果:

   table(mydata$union, exclude=NULL)

我找不到任何关于此的文档,但我所拥有的只是:

  CrossTable(mydata$union,digits=4)

标签: rmissing-datacrosstab

解决方案


似乎该gmodels::CrossTable函数不处理 R type NA。它似乎深受 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 包(v0.3.0)于 2021-02-06 创建


推荐阅读