gpt4 book ai didi

r - 使用 haven::labelled 动态创建值标签

转载 作者:行者123 更新时间:2023-12-05 05:07:11 25 4
gpt4 key购买 nike

我正在使用 haven::labelled 来设置变量的值标签。目标是创建一个完整记录的数据集,我可以将其导出到 SPSS。

现在,假设我有一个 df value_labels 值及其值标签。我还有 df df_data 和我想为其分配值标签的变量。

value_labels <- tibble(
value = 1:6,
labels = paste0("value", 1:6)
)

df_data <- tibble(
id = 1:10,
var = floor(runif(10, 1, 6))
)

手动地,我会像这样为 df_data$var 创建值标签:

df_data$var <- haven::labelled(df_data$var, labels = c(values1 = 1, values2 =  2, values3 = 3, values4 = 4, values5 = 5, values6 = 6))

但由于我有超过 16 个数据集和近 7000 列,我需要一种更动态的方式来分配值标签。请注意,据我所知,"values1"= 1values1 = 1(引号)之间存在差异,具体取决于变量类。

请注意,我使用 haven::labelled 因为这是唯一的方法,到目前为止,我已经能够成功导出带有值标签的 .sav 文件。我试过 sjlabelled,但没有成功。

最佳答案

我们可以deframe'value_labels',将它用作labeled函数中的labels参数

library(dplyr)
library(tibble)
df_data %>%
mutate(var = haven::labelled(var, labels = deframe(value_labels[2:1])))

如果有更多列,则使用mutate_at

df_data %>%
mutate_at(vars(var), ~ haven::labelled(., labels = deframe(value_labels[2:1])))

对于多个数据集,将它们放在一个list中,然后使用map遍历list并立即应用

library(purrr)
keyval <- deframe(value_labels[2:1])
list(df_data, df_data) %>%
map( ~
.x %>%
mutate_at(vars(var), ~ haven::labelled(., labels =
keyval)))

关于r - 使用 haven::labelled 动态创建值标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com