使用查找 table 和 sjlabelled::set_label 标记变量
Label variables with lookup table and sjlabelled::set_label
我需要用 sjlabelled::set_label 标记很多变量。这是一个可重现的例子和已经有效的例子:
library(data.table)
library(sjlabelled)
lookup <- data.table(id = paste0("q", 1:5),
question = paste0("qtext", 1:5))
data <- data.table(q1 = sample(1:5, 10, replace = TRUE),
q2 = sample(1:5, 10, replace = TRUE),
q3 = sample(1:5, 10, replace = TRUE),
q4 = sample(1:5, 10, replace = TRUE),
q5 = sample(1:5, 10, replace = TRUE))
data[, q1 := set_label(data[, q1], lookup[id == "q1", question])]
get_label(data$q1)
因此,如果我用它们的 id 调用它们,我就可以标记特定的变量,但是如果我想“循环”所有变量,我就很难完成这项任务。尝试使用 for 循环但没有成功。
目标是能够将数据表(或数据框)导出为 SPSS 文件。如果它与其他软件包一起使用,我也会很高兴。
您可以直接在数据框上使用 set_label
。
library(sjlabelled)
data <- set_label(data, lookup$question[match(names(data), lookup$id)])
get_label(data)
# q1 q2 q3 q4 q5
#"qtext1" "qtext2" "qtext3" "qtext4" "qtext5"
我需要用 sjlabelled::set_label 标记很多变量。这是一个可重现的例子和已经有效的例子:
library(data.table)
library(sjlabelled)
lookup <- data.table(id = paste0("q", 1:5),
question = paste0("qtext", 1:5))
data <- data.table(q1 = sample(1:5, 10, replace = TRUE),
q2 = sample(1:5, 10, replace = TRUE),
q3 = sample(1:5, 10, replace = TRUE),
q4 = sample(1:5, 10, replace = TRUE),
q5 = sample(1:5, 10, replace = TRUE))
data[, q1 := set_label(data[, q1], lookup[id == "q1", question])]
get_label(data$q1)
因此,如果我用它们的 id 调用它们,我就可以标记特定的变量,但是如果我想“循环”所有变量,我就很难完成这项任务。尝试使用 for 循环但没有成功。
目标是能够将数据表(或数据框)导出为 SPSS 文件。如果它与其他软件包一起使用,我也会很高兴。
您可以直接在数据框上使用 set_label
。
library(sjlabelled)
data <- set_label(data, lookup$question[match(names(data), lookup$id)])
get_label(data)
# q1 q2 q3 q4 q5
#"qtext1" "qtext2" "qtext3" "qtext4" "qtext5"