Свертывание фрейма данных по факторам в 2 столбца - PullRequest
0 голосов
/ 21 июня 2019

Я просмотрел несколько сообщений, но не могу найти решение, специфичное для моей проблемы.

У меня есть два факторных столбца (Quarter и Hour.of.Work), и я хотел бы свернуть оба одновременно, но я пытаюсь заставить команду fct_collapse работать над несколькими столбцами и факторами.

Я пробовал:

HW2 <- HW %>% 
        mutate(Hours.of.Work = 
                 fct_collapse(Hours.of.Work,
                              "0" = "0",
                              "1-19" = c("1-9", "10-19"),
                              "20-39" = c("20-29", "30-34", "35-39"),
                              "40" = "40",
                              "41-49" = c("41-44", "45-49"),
                              "50+" = "50+"),
               Hours.of.Work = factor(Hours.of.Work, 
                                      levels = c("0", "1-19", "20-39", "40", "41-49", "50+"))) 

но получите следующую ошибку: Unknown levels in f : 1-9, 10-19, 20-29, 30-34, 35-39, 40, 41-44, 45-49

Данные следующие:

dput(head(HW,20))
structure(list(Quarter = structure(c(49L, 49L, 49L, 49L, 49L, 
49L, 49L, 49L, 49L, 49L, 48L, 48L, 48L, 48L, 48L, 48L, 48L, 48L, 
48L, 48L), .Label = c("2007Q1", "2007Q2", "2007Q3", "2007Q4", 
"2008Q1", "2008Q2", "2008Q3", "2008Q4", "2009Q1", "2009Q2", "2009Q3", 
"2009Q4", "2010Q1", "2010Q2", "2010Q3", "2010Q4", "2011Q1", "2011Q2", 
"2011Q3", "2011Q4", "2012Q1", "2012Q2", "2012Q3", "2012Q4", "2013Q1", 
"2013Q2", "2013Q3", "2013Q4", "2014Q1", "2014Q2", "2014Q3", "2014Q4", 
"2015Q1", "2015Q2", "2015Q3", "2015Q4", "2016Q1", "2016Q2", "2016Q3", 
"2016Q4", "2017Q1", "2017Q2", "2017Q3", "2017Q4", "2018Q1", "2018Q2", 
"2018Q3", "2018Q4", "2019Q1"), class = "factor"), Hours.of.Work = structure(c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L), .Label = c("0", "1-9 ", "10-19 ", "20-29 ", 
"30-34 ", "35-39 ", "40 ", "41-44 ", "45-49 ", "50+"), class = "factor"), 
    Population = c(144.7, 132.7, 184.5, 244.3, 232.4, 163.1, 
    631.3, 94.1, 218.9, 408.3, 157.4, 129.6, 186.2, 233.6, 190, 
    161.7, 698.9, 85.6, 215.7, 413.4)), row.names = c(NA, 20L
), class = "data.frame")

Таким образом, я рассчитываю свести коэффициенты Hours.of.Work с c("0", "1-9 ", "10-19 ", "20-29 ", "30-34 ", "35-39 ", "40 ", "41-44 ", "45-49 ", "50+") до c("0", "1-19", "20-39", "40", "41-49", "50+") по соответствующим кварталам (например, 2019Q1, 2018Q4, 2019Q3 ... и т. Д.).

Я бы очень признателен за любую помощь, спасибо, куча!

EDIT: Обновленный код:

HW2 <- HW %>% 
        mutate(Hours.of.Work = 
                 fct_collapse(Hours.of.Work,
                              "0" = "0",
                              "1-19" = c("1-9 ", "10-19 "),
                              "20-39" = c("20-29 ", "30-34 ", "35-39 "),
                              "40" = "40 ",
                              "41-49" = c("41-44 ", "45-49 "),
                              "50+" = "50+"),
               Hours.of.Work = factor(Hours.of.Work, 
                                      levels = c("0", "1-19", "20-39", "40", "41-49", "50+")))

Я больше не получаю ошибку Unknown levels, но приведенный выше код приводит к неправильной агрегации моих факторов

Полученный Таблица

...