Уменьшение количества факторов в R на основе нескольких комбинаций возможных факторов

#r

#r

Вопрос:

У меня есть некоторые данные переписи, где людям разрешалось указывать свою расу либо как одну, либо как комбинацию многих разных рас. Мы позволяем им выбирать из этих вариантов.

Американский индеец

Восточная Азия

Житель тихоокеанских островов

Черный или афроамериканец

Белый или европеец

Латиноамериканец /a

Южная Азия

Ближневосточный

Другое

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

 structure(list(Race = structure(c(3L, 2L, 3L, 9L, 9L, 11L, 
5L, 11L, 3L, 3L, 3L, 3L, 7L, 3L, 11L, 5L, 9L, 10L, 9L, 10L, 2L, 
3L, 2L, 6L, 9L, 10L, 3L, 10L, 8L, 3L, 5L, 1L, 2L, 9L, 4L, 3L), .Label = c("Black or African American", 
"Black or African American,White or Caucasian", "East Asian", 
"East Asian,Pacific Islander", "Hispanic or Latino/a", "Other", 
"Pacific Islander", "South Asian", "White or Caucasian", "White or Caucasian,Hispanic or Latino/a", 
"White or Caucasian,Middle Eastern"), class = "factor")), class = "data.frame", row.names = c(NA, 
-36L))
  

Чтобы уменьшить количество факторов, я хотел бы превратить любую ячейку, в которой есть несколько рас в ячейке, в просто «Смешанную». Например, эту ячейку с надписью «Белый или кавказец, с Ближнего Востока» следует просто превратить в смешанную. Поскольку мой фактический набор данных огромен множеством различных комбинаций рас, использующих что-то вроде gsub() и вводящих во всех комбинациях замену на «Смешанный», мне не кажется возможным.

Комментарии:

1. Вы пробовали: data %>% mutate(Race = как.character(Раса), Race2 = replace(Раса, grepl(«,», Раса), «Смешанный»))

Ответ №1:

Для удобства использую dplyr, но вы можете сделать это с помощью base

 data %>% 
  mutate(Race  = as.character(Race), 
         Race2 = replace(Race, grepl(",", Race), "Mixed"))
  

Комментарии:

1. используйте fixed = TRUE в функциях регулярных выражений, когда это возможно

2. Поскольку у меня есть несколько пустых ячеек, в которых не предусмотрено race, есть ли способ сделать это, не получая "" , когда эта функция применяется к пустым ячейкам?

3. что вы хотите поместить в пустые ячейки?