微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Crosstable() 显示缺失值

如何解决使用 Crosstable() 显示缺失值

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

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

   table(mydata$union,exclude=NULL)

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

  Crosstable(mydata$union,digits=4)

解决方法

gmodels::CrossTable 函数似乎没有处理 R 类型的 NA。它似乎深受 SPSS 和 SAS 的启发,它们对 NA 有不同的约定。保留或删除任何未使用的因子水平的 missing.include 参数似乎也没有太大帮助。

如果您有 SPSS 背景,我建议您做一些类似于您在 SPSS 中所做的事情:将 NA 替换为常规值 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 年 2 月 6 日创建

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。