r - SPSS值标签作为R中表的列名?
问题描述
我正在使用 Haven 读取 .sav文件:
library(haven)
data <- read_spss("file.sav", user_na = FALSE)
然后尝试在表格中显示其中一个变量:
table(data$region)
返回:
1 2 3 4 5 6 7 8 9 10 11 12
85 208 43 171 30 40 95 310 133 29 77 36
然而,这在技术上是正确的 - 在 SPSS 中,顶行中的数值具有与之关联的标签(在这种情况下为区域名称)。如果我只是运行data$region
,它会在输出末尾显示数字及其相关标签,但是有没有办法让这些字符串标签出现在第一个表格行中,而不是它们的数字对应物?
预先感谢您的帮助!
解决方案
这样做的方法是将变量转换为因子,使用向量的“标签”属性作为因子水平。sjlabelled 包包含一个功能,可以一步完成:
data$region <- sjlabelled::as_label(data$region)
虽然 table 命令仍然可以处理结果数据,但布局可能有点混乱。forcats 包有一个函数可以漂亮地打印因子的频率表:
data$region %>% forcats::fct_count()
推荐阅读
- c - 如何设计一个可以独立调用多次的后台进程?
- python - 如何用python用'#'替换字符串中的每个连续字符?
- c++ - 何时在 C++ 中使用 char 数组而不是字符串?
- javascript - 如何使用 JS 将一个元素的 ID 移动到另一个元素
- r - 如何处理循环中的多个数据集以使用阈值执行二进制分类?
- ruby - macOS Big Sur 中的 Ruby 安装 (2.2.2) 失败
- sql - 如何在大查询中删除版本较低的记录?
- java - Gradle 在 Micronaut 项目中添加模块依赖
- ruby-on-rails - Rails 和现有的 Postgres 数据库
- angular - Angular 服务 - 为什么行为主题而不是使用变量?