Question Details

No question body available.

Tags

r survey

Answers (2)

February 27, 2026 Score: 2 Rep: 168,440 Quality: Medium Completeness: 80%

Up front, I'm not a labelled-guru, but on reading https://larmarange.github.io/labelled/articles/labelled.html#value-labels, one way is to apply labelled() to each column of dummydat with the applicable element of dictest.

for (nm in names(dummydat)) dummydat[[nm]] % in your code, that suggests you're using dplyr and could likely use tidyr, so I'll offer a more direct path for your code snippets:

library(dplyr) library(tidyr) library(labelled) dictest mutate(name = gsub("x", "", name)) |> dictionarytovaluelabels(namesfrom = question, valuesfrom = name, labelsfrom = value, data = dummydat) dummydat2 mutate(across(everything(), ~ labelled(.x, dictest[[curcolumn()]]))) dummydat2

X1 X21 X22 X3

1 1 1 3 1

2 2 2 2 2

3 1 3 1 3

dummydat2$X22

[1] 3 2 1

Labels:

value label

1 never

2 sometimes

3 always

February 27, 2026 Score: 0 Rep: 34,743 Quality: Medium Completeness: 80%

dictionarytovaluelabels() returns a named list of label definitions; splice it into setvaluelabels() with !!! to apply all labels to the data at once.

library(labelled)

dummydatlab transform(variable = as.numeric(gsub("x", "", variable))) |> na.omit() |> dictionarytovaluelabels( namesfrom = question, valuesfrom = variable, labelsfrom = value, data = dummydat ) |> (\(dic) setvaluelabels(dummydat, !!!dic))()

str(dummydatlab)

#> 'data.frame': 3 obs. of 4 variables: #> $ X1 : dbl+lbl [1:3] 1, 2, 1 #> ..@ labels: Named num 1 2 #> .. ..- attr(*, "names")= chr [1:2] "yes" "no" #> $ X21: dbl+lbl [1:3] 1, 2, 3 #> ..@ labels: Named num 1 2 3 #> .. ..- attr(, "names")= chr [1:3] "never" "sometimes" "always" #> $ X2_2: dbl+lbl [1:3] 3, 2, 1 #> ..@ labels: Named num 1 2 3 #> .. ..- attr(, "names")= chr [1:3] "never" "sometimes" "always" #> $ X3 : num 1 2 3

Created on 2026-02-27 with reprex v2.1.1