работа с факторами: переупорядочение, перемаркировка и перекодирование в R - PullRequest
1 голос
/ 11 января 2020

У меня проблемы с "разбором" символьной переменной и маркировкой / перекодированием разных уровней. Есть ли эффективный способ (т. Е. Меньше кодирования) для этого с помощью tidyverse или Base R, например recode или fct_collapse et c ... Спасибо

#This is what I have (a character variable)
x <- c("No", "Yes", "No2", "No3", "Maybe", "undecided", 
       "probably", "dont know", NA)
x
#I want a factor with three ordered levels as follows:

#where No = c("No", "No2", "No3")
#Yes = c("Yes")
#other = c("Maybe", "undecided", "probably")
#NA = c("dont know", NA)
# and the levels would be 0 = "No",  1 = "Yes" and 2 = "Maybe"
#that is:
#xfact
# [1] No    Yes   other
# Levels: No Yes other
#
# as.integer(xfact)
# [1] 0, 1, 2```

1 Ответ

0 голосов
/ 13 января 2020

Что-то вроде этого должно сделать это:

library(tidyverse)

x <- c("No", "Yes", "No2", "No3", "Maybe", "undecided", 
       "probably", "dont know", NA)

na_if(x, "dont know") %>% 
  fct_collapse(
    no = c("No", "No2", "No3"),
    yes = c("Yes"),
    other = c("Maybe", "undecided", "probably")
  ) %>% 
  fct_inorder()
#> [1] no    yes   no    no    other other other <NA>  <NA> 
#> Levels: no yes other

Создано в 2020-01-13 пакетом Представить (v0.3.0)

...