Сделать так, чтобы значения конкретной переменной отображались в столбце R df как условие текста в другом столбце - PullRequest
0 голосов
/ 12 июля 2020

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

Я пробовал это:

prospects2020$leaguemod <- if(prospects2020$LEAGUE == "QMJHL") {
  QMJHLe
} else if (prospects2020$LEAGUE == "OHL") {
  OHLe
}else{
  WHLe
}

где QMJHLe, OHLe и WHLe - переменные в моем GE, и он создает столбец, но каждое значение равно значению QMJHLe. Я получаю сообщение об ошибке:

Предупреждение:

In if (prospects2020$LEAGUE == "QMJHL") { : the condition has length > 1 and only the first element will be used

Мне кажется, это должно сработать, но я новичок в этом. Может быть, это неправильный способ выполнить sh то, что я пытаюсь сделать? Как я могу заставить его вести себя так, как я задумал, или мне следует использовать совершенно другой подход?

1 Ответ

0 голосов
/ 12 июля 2020

Предполагая, что переменные QMJHLe, OHLe и WHLe имеют длину 1, вы можете использовать ifelse здесь для векторных значений.

prospects2020$leaguemod  <- ifelse(prospects2020$LEAGUE == "QMJHL", QMJHLe, 
                              ifelse(prospects2020$LEAGUE == "OHL", OHLe, WHLe))

Или с case_when:

library(dplyr)
prospects2020 %>%
   mutate(leaguemod = case_when(LEAGUE == "QMJHL", ~ QMJHLe, 
                                LEAGUE == "OHL", ~OHLe, 
                                TRUE ~ WHLe))
...