【问题标题】:Label variables with lookup table and sjlabelled::set_label使用查找表和 sjlabelled::set_label 标记变量
【发布时间】:2021-06-27 06:52:10
【问题描述】:

我需要用 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 文件。如果它适用于其他软件包,我也会很高兴。

【问题讨论】:

    标签: r spss labeling


    【解决方案1】:

    您可以直接在数据帧上使用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" 
    

    【讨论】:

    • 我想我也可以很容易地用 set_labels() 和 answertext 做到这一点,但我不知何故不能。一个变量的不同答案标签用“;”分隔像这样“是;不;不知道”。您是否也知道我该如何解决这个问题?试图用 strsplit() 解决它,但没有运气。
    • 嗯...对不起,我不清楚这个问题。你能用一个类似的例子和预期的输出作为一个新问题来问它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    相关资源
    最近更新 更多