根据标记数据创建带有标签的列

Ivo*_*Ivo 2 r r-haven tidyverse r-labelled

我有一个带有标签数据的数据集,并且想创建一个仅包含标签作为字符的新列。

考虑以下示例:

value_labels <- tibble(value = 1:6, labels = paste0("value", 1:6))
df_data <- tibble(id = 1:10, var = floor(runif(10, 1, 6)))
df_data <- df_data %>% mutate(var = haven::labelled(var, labels = deframe(value_labels[2:1])))
Run Code Online (Sandbox Code Playgroud)

这产生:

# A tibble: 10 x 2
      id        var
   <int>  <dbl+lbl>
 1     1 2 [value2]
 2     2 2 [value2]
 3     3 4 [value4]
 4     4 2 [value2]
 5     5 4 [value4]
 6     6 3 [value3]
 7     7 5 [value5]
 8     8 4 [value4]
 9     9 3 [value3]
10    10 1 [value1]
Run Code Online (Sandbox Code Playgroud)

我现在想创建一个labs仅包含标签的附加列(即value2第 1 行和第 2 行、value4第 3 行等)。

我尝试使用val_labs()( df_data %>% mutate(labs = val_labels(df_data$var, var))) 失败。有人可以指出执行此操作的正确方法吗?

Dar*_*sai 6

haven::as_factor()用于此目的。请参阅标记向量帮助页面的示例。

\n
df_data %>%\n  mutate(labs = as_factor(var))\n\n# A tibble: 10 \xc3\x97 3\n      id        var  labs \n   <int>  <dbl+lbl> <fct> \n 1     1 2 [value2] value2\n 2     2 5 [value5] value5\n 3     3 2 [value2] value2\n 4     4 5 [value5] value5\n 5     5 2 [value2] value2\n 6     6 4 [value4] value4\n 7     7 5 [value5] value5\n 8     8 4 [value4] value4\n 9     9 5 [value5] value5\n10    10 3 [value3] value3\n
Run Code Online (Sandbox Code Playgroud)\n