IF - функция возврата в R для спортивной книги - PullRequest
0 голосов
/ 05 июля 2018

У меня есть следующий набор данных (pre_df), и я хочу:

pre_df

Когда выделение = home - вернуть APL в новый столбец (в данном случае Home_APL).

Когда выбор = прочь - вернуть APL в новый столбец.

При выделении = Ничья - возврат APL в новый столбец

Я уже сделал первый пример (Home_APL), однако, когда я запускаю ту же функцию IF для Away_APL, она не работает.

#Home_APL
for (row in 1:nrow(pre_df)) 

{ 
    if(pre_df$selection[row] == pre_df$home[row])
        {
        pre_df$Home_APL[row] = pre_df$APL[row]
        } 
}


#Away_APL
for (row in 1:nrow(pre_df)) 
{ 
    if(pre_df$selection[row] == pre_df$away[row])
        {
        pre_df$Away_APL[row] = pre_df$APL[row]
        } 
}

1 Ответ

0 голосов
/ 05 июля 2018

Как сказал @ r2evans, сделайте ваш вопрос воспроизводимым. И укажите, что было ошибкой, когда вы говорите «это не работает».

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

Error in `$<-.data.frame`(`*tmp*`, "Away_APL", value = c(NA, 10.4752232550593 : 
  replacement has 2 rows, data has 1153

ошибка.

Чтобы решить эту проблему, вы можете сначала вручную создать оба столбца со значением, а затем заполнить соответствующие строки.

pre_df$Home_APL <- 0
pre_df$Away_APL <- 0

Затем запустите свой цикл,

# > head(pre_df, 10)
#     X       date eventId      selection           home           away toverByPrice  turnover       APL Home_APL  Away_APL
# 1   1 01/01/2017 4414294        Arsenal        Arsenal Crystal Palace     61883.68  45861.26  1.349367 1.349367  0.000000
# 2   2 01/01/2017 4414294 Crystal Palace        Arsenal Crystal Palace    184655.35  17627.82 10.475223 0.000000 10.475223
# 3   3 01/01/2017 4414294           Draw        Arsenal Crystal Palace     41557.02   7540.92  5.510868 0.000000  0.000000
# 4   4 01/01/2017 4414399           Draw        Watford      Tottenham     13851.13   3517.82  3.937418 0.000000  0.000000
# 5   5 01/01/2017 4414399      Tottenham        Watford      Tottenham    184797.52 114681.12  1.611403 0.000000  1.611403
# 6   6 01/01/2017 4414399        Watford        Watford      Tottenham     73569.21  12606.46  5.835834 5.835834  0.000000
# 7   7 01/02/2017 4413713           Draw Manchester Utd           Hull      8293.93   1130.00  7.339761 0.000000  0.000000
# 8   8 01/02/2017 4413713           Hull Manchester Utd           Hull    130880.46   7150.82 18.302860 0.000000 18.302860
# 9   9 01/02/2017 4413713 Manchester Utd Manchester Utd           Hull     17798.90  14842.22  1.199207 1.199207  0.000000
# 10 10 01/02/2017 4413852           Draw          Stoke        Everton     32646.77   9561.08  3.414548 0.000000  0.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...