Преобразовать в фактор, а затем отобразить в пользовательском порядке на графике

У меня есть столбец символов в следующем фрейме данных. Я хотел бы изменить его таким образом, чтобы, когда я использую 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.


person Arthur Carvalho Brito    schedule 03.03.2020    source источник
comment
Добавление Variable = as.factor(c(....)) изменит переменную на фактор.   -  person TTS    schedule 04.03.2020
comment
Каков ваш ожидаемый результат?   -  person Ronak Shah    schedule 04.03.2020
comment
@RonakShah Я хочу использовать ggplot для построения точечного графика. Я хотел бы, чтобы переменные с разными значениями в Level имели разные формы. Я также хочу, чтобы они отображались в определенном порядке, заданном вторым столбцом второго фрейма данных, опубликованного в вопросе.   -  person Arthur Carvalho Brito    schedule 04.03.2020


Ответы (1)


Поскольку вы полностью изменили вопрос, мой первоначальный ответ стал недействительным. Я был вынужден изменить его, чтобы избежать отрицательных голосов.

Вероятно, лучше задать новый вопрос в этой ситуации.

Ответ точно в том же формате, что и оригинал; Вы, кажется, просто запутались с уровнями факторов. В вашем списке желаемого порядка факторов на самом деле отсутствует один - «Высококвалифицированный синий воротничок».

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"

Создано 4 марта 2020 г. с помощью пакета reprex (v0.3.0)

person Allan Cameron    schedule 03.03.2020
comment
Я на самом деле не уверен, что происходит. Мне кажется, код смешивает мои значения. Я собираюсь изменить вопрос, опубликовав свой реальный набор данных - person Arthur Carvalho Brito; 04.03.2020