我有一個帶有標簽資料的資料集,并想創建一個僅包含標簽作為字符的新列。
考慮以下示例:
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僅包含標簽的附加列(即value2在第 1 行和第 2 行,value4在第 3 行等。
我嘗試使用val_labs()( df_data %>% mutate(labs = val_labels(df_data$var, var))) 失敗。有人可以指出正確的方法嗎?
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
我們可以用get_labels
library(dplyr)
library(sjlabelled)
df_data %>%
mutate(labs = get_labels(var)[var])
-輸出
# 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460023.html
