我曾使用haven
和sjlabelled
来尝试使用sav文件中包含的数据标签。
以下是一些示例数据(真实的数据要大得多,包含更多的变量、值、标签等,并且所有值都出现了无数次):
library(sjlabelled)
col1 <- c("a", "b", "c")
col2 <- c(1, 2, 3)
df <- data.frame(col1, col2)
labels <- c("x", "y", "z")
df <- set_labels(df, col2, labels = labels)
字符串
我知道我可以使用as_label
来使用标签操作数据框,使用这些标签进行子集设置,等等。但是,我想用标签替换值,因为有些函数/进程会将数据还原为值并完全删除标签。我无法确定何时会发生这种情况。
使用示例数据,我希望原始数据框最终如下所示,但不是定义新的数据框,而是使用标签覆盖值:
col1 <- c("a", "b", "c")
col2 <- c("x", "y", "z") # these were the labels but are now the values
df <- data.frame(col1, col2)
型
2条答案
按热度按时间tjvv9vkg1#
我们可以使用
get_labels
字符串
型
lnlaulya2#
当并非所有标签都作为值包含在数据集中时,或者如果所有值都缺失(这可能发生在调查数据中),
get_labels(x)[x]
方法可能会导致问题。默认情况下,
sjlabelled::read_spss
将所有带值标签的原子变量 * 转换为因子。考虑到这些表示带标签的分类变量,将输出变量作为因子返回是有意义的。所有没有值标签的原子变量都被假设为连续变量,并按原样返回。sjlabelled::copy_labels
可用于在删除值和变量标签时返回它们。字符串
创建于2023-10-31使用reprex v2.0.2