R 使用haven::labeled动态创建值标签

R 使用haven::labeled动态创建值标签,r,spss,r-haven,R,Spss,R Haven,我使用haven::labeled设置变量的值标签。目标是创建一个完整的文档数据集,我可以将其导出到SPSS 现在,假设我有一个值及其值标签的dfvalue\u标签。我还有I dfdf_data,其中包含我想要分配值标签的变量 value_labels <- tibble( value = 1:6, labels = paste0("value", 1:6) ) df_data <- tibble( id = 1:10, var = floor(runif(10,

我使用haven::labeled设置变量的值标签。目标是创建一个完整的文档数据集,我可以将其导出到SPSS

现在,假设我有一个值及其值标签的df
value\u标签。我还有I 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))
)
但是,由于我有超过16个数据集,将近7000列,我需要一种更动态的方法来分配值标签。请注意,据我所知,
“values1”=1
values1=1
(引号)之间存在差异,这取决于变量类别


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

我们可以
deframe
value\u labels,将其用作
labeled
函数中的
labels
参数

library(dplyr)
library(tibble)
df_data %>%
     mutate(var = haven::labelled(var, labels = deframe(value_labels[2:1])))
如果有更多列,则使用
mutate\u at

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

对于多个数据集,将它们放在
列表中
,并使用
映射
列表上循环并立即应用

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

现在我扩展df
value\u标签
,使其包含
var1
var2
的值标签<代码>价值标签@oskjerv你能不能作为一个新问题发布。
library(purrr)
keyval <- deframe(value_labels[2:1])
list(df_data, df_data) %>%
    map( ~
          .x %>%
             mutate_at(vars(var), ~ haven::labelled(., labels = 
             keyval)))