我有一个带有标签数据的数据集,并且希望创建一个只包含标签为字符的新列。
请考虑以下示例:
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])))这产生了:
# 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]现在,我想创建一个只包含标签的附加列labs (即第1行和第2行中的value2,第3行中的value4等等)。
我尝试过使用val_labs() (df_data %>% mutate(labs = val_labels(df_data$var, var))),但没有成功。有人能指出正确的方法吗?
发布于 2022-04-20 15:40:22
haven::as_factor()是用来实现这一目标的。有关标记向量,请参见帮助页的示例。
df_data %>%
mutate(labs = as_factor(var))
# A tibble: 10 × 3
id var labs
<int> <dbl+lbl> <fct>
1 1 2 [value2] value2
2 2 5 [value5] value5
3 3 2 [value2] value2
4 4 5 [value5] value5
5 5 2 [value2] value2
6 6 4 [value4] value4
7 7 5 [value5] value5
8 8 4 [value4] value4
9 9 5 [value5] value5
10 10 3 [value3] value3发布于 2022-04-20 15:42:25
我们可以使用get_labels
library(dplyr)
library(sjlabelled)
df_data %>%
mutate(labs = get_labels(var)[var])-output
# A tibble: 10 × 3
id var labs
<int> <dbl+lbl> <chr>
1 1 3 [value3] value3
2 2 3 [value3] value3
3 3 2 [value2] value2
4 4 4 [value4] value4
5 5 5 [value5] value5
6 6 3 [value3] value3
7 7 3 [value3] value3
8 8 4 [value4] value4
9 9 1 [value1] value1
10 10 2 [value2] value2发布于 2022-06-22 06:50:07
我使用labelled包也是为了同样的目的。
library(dplyr)
library(labelled)
df_data %>%
mutate(labs = to_factor(var))输出:
# A tibble: 10 × 3
id var labs
<int> <dbl+lbl> <fct>
1 1 5 [value5] value5
2 2 4 [value4] value4
3 3 5 [value5] value5
4 4 5 [value5] value5
5 5 2 [value2] value2
6 6 5 [value5] value5
7 7 2 [value2] value2
8 8 5 [value5] value5
9 9 5 [value5] value5
10 10 1 [value1] value1发现转换整个df也很有用:
df_factors <- to_factor(df_data)
df_factors输出:
# A tibble: 10 × 2
id var
<int> <fct>
1 1 value5
2 2 value4
3 3 value5
4 4 value5
5 5 value2
6 6 value5
7 7 value2
8 8 value5
9 9 value5
10 10 value1https://stackoverflow.com/questions/71942322
复制相似问题