为什么我用R生成列联表时出现冗余空白行和“Any”列?
问题原因
出现空白行和Any冗余列的核心原因有两个:
- 你代码中加载的数据集和你预期的来源不一致:你需要的是
openintro包的loans_full_schema,但实际加载的是oibiostat包的同名数据集。两个包的该数据集对字段的因子水平定义存在差异:oibiostat版本的homeownership字段预设了ANY这个因子水平,application_type字段也预设了空白的因子水平。 - R的
table()函数默认会保留因子的所有预设水平,哪怕对应水平没有实际观测值,也会在列联表中生成对应的空行/空列。
解决方法
方案1:使用匹配需求的openintro包数据集
# 未安装包先执行:install.packages("openintro") library(openintro) data("loans_full_schema") tab <- table(loans_full_schema$application_type, loans_full_schema$homeownership) tab
运行以上代码就能得到你预期的列联表效果。
方案2:如果要继续使用oibiostat包的数据集,先清理未使用的因子水平
library(oibiostat) data("loans_full_schema") # 移除目标字段的未使用因子水平 loans_full_schema$application_type <- droplevels(loans_full_schema$application_type) loans_full_schema$homeownership <- droplevels(loans_full_schema$homeownership) tab <- table(loans_full_schema$application_type, loans_full_schema$homeownership) tab
内容的提问来源于stack exchange,提问作者Willkczy
相关产品推荐
相关产品推荐

