Инструкция ifelse в R не работает - неверный результат столбца - PullRequest
0 голосов
/ 09 июня 2018

У меня есть df:

Год |Этап |Home.Team.Name |Home.Team.Goals |Away.Team.Name |В гостях. Команда. Голы

1998 |Группа А |Бразилия .................. |2 ............................ |Шотландия ............... |1

и так далее.

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

RecentWorldCups$Game.Winner <- ifelse(RecentWorldCups$Home.Team.Goals>RecentWorldCups$Away.Team.Goals, RecentWorldCups$Home.Team.Name,
                                      ifelse(RecentWorldCups$Away.Team.Goals>RecentWorldCups$Home.Team.Goals, RecentWorldCups$Away.Team.Name,
                                             "Draw"))

Результатом этого является то, что он дает мне номер (возможно, фактор-число?) Вместо названия команды.

Кто-нибудь может помочь?Приветствия

1 Ответ

0 голосов
/ 09 июня 2018

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

df <- RecentWorldCups     # for readability of your code

df$Game.Winner <- ifelse(df$Home.Team.Goals > df$Away.Team.Goals,
   levels(df$Home.Team.Name)[df$Home.Team.Name],
   ifelse(df$Away.Team.Goals > df$Home.Team.Goals,
       levels(df$Away.Team.Name)[df$Away.Team.Name],
       "Draw")
)

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

RecentWorldCups <- data.frame(Home.Team.Goals=c(...), ..., stringsAsFactors=FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...