Создайте новый уровень категориальной переменной в новом столбце переменных в R - PullRequest
1 голос
/ 25 марта 2020

Я новичок в R, поэтому застрял здесь .. У меня есть категориальные данные

levels(df$SO)
"SO1", "SO2","SO3","SO4","SO5","SO6",SO7",SO8"

Я хочу переклассифицировать эти уровни следующим образом, НО СОХРАНИТЬ ИХ КАК НОВУЮ КОЛОННУ (df $ newSO) В ТОЛЬКО ОДНОЙ ДАННОЙ КАДРЕ.

levels(df$newSO)
"Unknown", "Known","Disease","Control"

Здесь Unknown состоит из уровней SO1 и SO2, Known состоит из SO3 и SO4. Disease содержит SO5, SO6 и SO7. Control содержит S8. Я использую следующие

levels(df$SC)[levels(df$SC)%in%c("SOC1","SOC2")] <- "Unknown"

Но это переименование уровней в том же столбце (df $ SO). Я хочу, чтобы предыдущий столбец был целым при создании нового столбца новых уровней. Как это сделать в R?

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

dplyr и forcats решение:

library(dplyr)
library(forcats)

example <- data.frame(SO = factor(c("SO1", "SO2", "SO3", "SO4",
                                    "SO5", "SO6", "SO7", "SO8")))

result <- example %>%
  mutate(newSO = fct_collapse(SO,
                              Unknown = c("SO1", "SO2"),
                              Known = c("SO3", "SO4"),
                              Disease = c("SO5", "SO6", "SO7"),
                              Control = "SO8"))
2 голосов
/ 25 марта 2020

Вы можете попробовать следующее

df$newSO <- ifelse(df$SO %in% c("SOC1", "SOC2"), "Unknown", "Known")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...