首页 > 解决方案 > 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,它会在输出末尾显示数字及其相关标签,但是有没有办法让这些字符串标签出现在第一个表格行中,而不是它们的数字对应物?

预先感谢您的帮助!

标签: rspss

解决方案


这样做的方法是将变量转换为因子,使用向量的“标签”属性作为因子水平。sjlabelled 包包含一个功能,可以一步完成:

data$region <- sjlabelled::as_label(data$region)

虽然 table 命令仍然可以处理结果数据,但布局可能有点混乱。forcats 包有一个函数可以漂亮地打印因子的频率表:

data$region %>% forcats::fct_count()

推荐阅读