【发布时间】:2021-03-31 19:17:04
【问题描述】:
我需要用 sjlabelled::set_labels 标记很多变量中的值。这是一个可重现的示例,并且已经有效:
library(data.table)
library(sjlabelled)
lookup <- data.table(id = paste0("q", 1:5),
answers = paste(paste0("atext", 1:5), paste0("btext", 1:5)
, paste0("ctext", 1:5), sep = ";"))
data <- data.table(q1 = sample(1:3, 10, replace = TRUE),
q2 = sample(1:3, 10, replace = TRUE),
q3 = sample(1:3, 10, replace = TRUE),
q4 = sample(1:3, 10, replace = TRUE),
q5 = sample(1:3, 10, replace = TRUE))
data$q1 <- set_labels(data$q1, labels = unlist(strsplit(lookup[id == "q1", answers], split = ";")))
get_labels(data$q1)
因此,不同答案(=值)的标签用分号分隔。如果我通过 id 调用变量,我可以让它工作,但正如您在示例代码中看到的那样,但如果我想“循环”所有变量,我正在努力完成这项任务。
目标是能够将数据表(或数据框)导出为 SPSS 文件。如果它适用于其他软件包,我也会很高兴。
【问题讨论】: