Как сохранить свернутые уровни факторов (для нескольких переменных) в новом фрейме данных? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь свернуть уровни факторов, и первоначально вывод count(a7_edu2) показывает, что коллапс сработал, но когда я проверяю структуру и смотрю в представлении RStudio, изменение не влияет на фактическую переменную.

Любой совет для сохранения в качестве новой переменной или перезаписи старой?Спасибо!

Я использовал fct_collapse, чтобы разделить на три категории, и попытался mutate() создать новую переменную с новыми уровнями.Я попытался сохранить в новую переменную, а также transmute () вместо mutate ().Я был бы удовлетворен либо новой переменной, либо заменой старой.

  mutate(a7_edu2 = fct_collapse(a7_edu2,
    Highschool = c("Elm School", "Grade 7 or 8", "Grade 9 to 11", "High School Diploma", "G.E.D"),
    Diploma = c("Diploma or Certificate from trade tech school" , "Diploma or Certificate from community college or CEGEP"),
    Bachelors = c("Bachelor degree", "Degree (Medicine, Dentistry etc)", "Masters degree", "Doctorate")
  )) %>%
  count(a7_edu2) # this is the result I want but when i check the structure, it doesn't save!


str(SCI_dem$a7_edu2)

Я ожидал, что результатом будет «Фактор с 4 уровнями» Highschool »,« Diploma »,« Bachelors »,« other"но вместо этого он дал оригинальный" Фактор с 13 уровнями "Школа вязов", "7 или 8 класс", ..: 8 7 6 10 7 7 8 3 7 10 ... "


ОБНОВЛЕННЫЙ ВОПРОС: Он работает, чтобы сохранить одну переменную в новый df (SCI_collpase).Тем не менее, , когда я пытаюсь сохранить другие новые свернутые переменные в том же кадре данных, он перезаписывает предыдущие свернутые ... Я попытался указать новые столбцы SCI_collapse$edu, но затем переименовывает существующие переменные в df ... Как свернуть несколько переменных и добавить их каждую в новый df? Рекомендации по сохранению или записи канала?

SCI_collapse <- SCI_dem %>% 
  mutate(a7_edu2 = fct_collapse(a7_edu2, 
                                Highschool = c("Elm School", 
                                                        "Grade 7 or 8", 
                                                        "Grade 9 to 11", 
                                                        "High School Diploma", 
                                                        "G.E.D"), 
                                Diploma = c("Diploma or Certificate from trade tech school" , 
                                            "Diploma or Certificate from community college or CEGEP"), 
                                Bachelors = c("Bachelor degree", 
                                              "Degree (Medicine, Dentistry etc)", 
                                              "Masters degree", "Doctorate")))

1 Ответ

0 голосов
/ 12 июня 2019

Это то, что я в итоге сделал:

# Collapse levels (education) SCI_dem <- SCI_dem %>% mutate(a7_edu2_col = fct_collapse(a7_edu2, # Save as new variable ending in _col Highschool= c("Elm School", "Grade 7 or 8", "Grade 9 to 11", "High School Diploma", "G.E.D"), Diploma = c("Diploma or Certificate from trade tech school" , "Diploma or Certificate from community college or CEGEP"), Bachelors= c("Bachelor degree", "Degree (Medicine, Dentistry etc)", "Masters degree", "Doctorate"), Other = c("Other", "Prefer not to answer") ), a7_edu2_col = droplevels(a7_edu2_col)) %>% # drop empty levels of _col rename(a7_edu2_unc = a7_edu2)

Теперь у меня есть новые переменные, оканчивающиеся на _col и переименованные в старые переменные оканчиваются на _unc (для не свернутых).Затем я очищаю вещи, удаляя столбцы, заканчивающиеся на _unc.

SCI_dem <- select(SCI_dem, -ends_with("_unc"))

, что оставляет меня с моим незагроможденным свернутым фреймом данных:)

...