R - датафрейм, создающий дополнительный столбец с циклом if или else - PullRequest
0 голосов
/ 03 мая 2020

У меня есть следующий простой фрейм данных:

df <- data.frame("StudyID" = paste("Study", seq(1:100), sep = "_"),
             "Score" = sample(c(1:30),100, replace = TRUE))

Я хочу создать дополнительный столбец в фрейме данных: df. Этот столбец должен содержать значение:

  • "отлично", если значение в столбце Оценка больше 20.
  • "плохо", если значение меньше 10.
  • «нейтрально», если нет (например, между 10 и 20).

Этот новый столбец НУЖЕН быть сделан с IF или ELSE-l oop или с обоими.

Спасибо заранее !! Ваша помощь очень ценится!

-Все предоставленный код предоставлен.

Ответы [ 3 ]

1 голос
/ 03 мая 2020

Вероятно, самое простое решение без каких-либо дополнительных функций или пакетов - через поднаборы и вложенные ifelse:

df$new <- ifelse(df$Score > 20, "great",
                 ifelse(df$Score < 10, "bad", "neutral"))
1 голос
/ 03 мая 2020

Вы можете использовать вложенные ifelse:

transform(df, newcol = ifelse(Score > 20, "great", 
                        ifelse(Score < 10, "bad", "neutral")))

или case_when из dplyr:

library(dplyr)

df %>%
  mutate(newcol = case_when(Score > 20 ~ "great",
                            Score < 10 ~ "bad", 
                            TRUE ~ "neutral"))
0 голосов
/ 03 мая 2020

Мы можем использовать fifelse от data.table

library(data.table)
setDT(df)[, newcol := fifelse(Score > 20, "great", 
                        fifelse(Score < 10, "bad", "neutral"))]

Или с fcase

setDT(df)[, newcol := fcase(Score > 20, "great",
                            Score < 10, "bad",
                            "neutral")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...