转换为因子,然后以自定义顺序显示在图表上
Convert to factor and then display in a custom order on graph
我在以下数据框中有一个字符列。我想将其更改为这样一种方式,即当我使用 ggplot 绘制结果时,我的 x 轴上的标签按特定顺序排列:
df <- structure(list(Level = c("1", "1", "1", "1", "1", "2", "1", "1"
), Variable = c("lskill_wc", "Grande_Estab", "lskill_wc", "lskill_bc",
"hskill_wc", "balcadv", "hskill_bc", "Vinculos_Micro"), estimate = c(0.154462929180099,
-0.00565989816383741, 0.127039272664461, 0.244657086455149, 0.153358091697942,
-0.00769107968294057, -0.00592547333520778, 0.138216262540319
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-8L))
我想将前两列更改为因子,重新编码并更改它们的顺序:
Level Correspondence
<chr> <chr>
1 1 A
2 2 B
Variable Correspondence
<chr> <chr>
1 lskill_wc Low skill white collar
2 lskill_bc Low skill blue collar
3 hskill_bc High skill white collar
4 Grande_Estab Large firm
5 Vinculos_Micro Employment
6 balcadv Comp. Adv
图表上显示的顺序将是根据每个 Correspondence
列中的标签给出的标签。
由于你彻底改题,我原来的回答作废了。我被迫更改它以避免吸引反对票。
在这种情况下问一个新问题可能会更好。
答案格式与原文完全一致;您似乎只是对您的因子水平感到困惑。您所需的因素排序列表实际上漏掉了一个 - "High skill blue collar worker"
labels <- c( "Comp. Adv", "Large firm", "High skill blue collar worker",
"High skill white collar worker", "Low skill blue collar worker",
"Low skill white collar worker", "Employment")
df$label <- as.factor(df$Variable)
levels(df$label) <- labels
df$label <- factor(df$label, labels[c(6, 5, 4, 3, 2, 7, 1)])
df
#> # A tibble: 8 x 4
#> Level Variable estimate label
#> <chr> <chr> <dbl> <fct>
#> 1 1 lskill_wc 0.154 Low skill white collar worker
#> 2 1 Grande_Estab -0.00566 Large firm
#> 3 1 lskill_wc 0.127 Low skill white collar worker
#> 4 1 lskill_bc 0.245 Low skill blue collar worker
#> 5 1 hskill_wc 0.153 High skill white collar worker
#> 6 2 balcadv -0.00769 Comp. Adv
#> 7 1 hskill_bc -0.00593 High skill blue collar worker
#> 8 1 Vinculos_Micro 0.138 Employment
levels(df$label)
#> [1] "Low skill white collar worker" "Low skill blue collar worker"
#> [3] "High skill white collar worker" "High skill blue collar worker"
#> [5] "Large firm" "Employment"
#> [7] "Comp. Adv"
由 reprex package (v0.3.0)
于 2020-03-04 创建
我在以下数据框中有一个字符列。我想将其更改为这样一种方式,即当我使用 ggplot 绘制结果时,我的 x 轴上的标签按特定顺序排列:
df <- structure(list(Level = c("1", "1", "1", "1", "1", "2", "1", "1"
), Variable = c("lskill_wc", "Grande_Estab", "lskill_wc", "lskill_bc",
"hskill_wc", "balcadv", "hskill_bc", "Vinculos_Micro"), estimate = c(0.154462929180099,
-0.00565989816383741, 0.127039272664461, 0.244657086455149, 0.153358091697942,
-0.00769107968294057, -0.00592547333520778, 0.138216262540319
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-8L))
我想将前两列更改为因子,重新编码并更改它们的顺序:
Level Correspondence
<chr> <chr>
1 1 A
2 2 B
Variable Correspondence
<chr> <chr>
1 lskill_wc Low skill white collar
2 lskill_bc Low skill blue collar
3 hskill_bc High skill white collar
4 Grande_Estab Large firm
5 Vinculos_Micro Employment
6 balcadv Comp. Adv
图表上显示的顺序将是根据每个 Correspondence
列中的标签给出的标签。
由于你彻底改题,我原来的回答作废了。我被迫更改它以避免吸引反对票。
在这种情况下问一个新问题可能会更好。
答案格式与原文完全一致;您似乎只是对您的因子水平感到困惑。您所需的因素排序列表实际上漏掉了一个 - "High skill blue collar worker"
labels <- c( "Comp. Adv", "Large firm", "High skill blue collar worker",
"High skill white collar worker", "Low skill blue collar worker",
"Low skill white collar worker", "Employment")
df$label <- as.factor(df$Variable)
levels(df$label) <- labels
df$label <- factor(df$label, labels[c(6, 5, 4, 3, 2, 7, 1)])
df
#> # A tibble: 8 x 4
#> Level Variable estimate label
#> <chr> <chr> <dbl> <fct>
#> 1 1 lskill_wc 0.154 Low skill white collar worker
#> 2 1 Grande_Estab -0.00566 Large firm
#> 3 1 lskill_wc 0.127 Low skill white collar worker
#> 4 1 lskill_bc 0.245 Low skill blue collar worker
#> 5 1 hskill_wc 0.153 High skill white collar worker
#> 6 2 balcadv -0.00769 Comp. Adv
#> 7 1 hskill_bc -0.00593 High skill blue collar worker
#> 8 1 Vinculos_Micro 0.138 Employment
levels(df$label)
#> [1] "Low skill white collar worker" "Low skill blue collar worker"
#> [3] "High skill white collar worker" "High skill blue collar worker"
#> [5] "Large firm" "Employment"
#> [7] "Comp. Adv"
由 reprex package (v0.3.0)
于 2020-03-04 创建