Как использовать или в ifelse заявление в R? - PullRequest
0 голосов
/ 12 января 2019

Я использую приведенный ниже код, он не работает. Y имеет 2 уровня (функция или не работает). Какое решение?

data$Team1=factor(data$Team1)

y=levels(data$Team1)

data$win_loss=ifelse(data$winner==y[2]|y[1], "winner",
              ifelse(data$winner==is.na(data$winner),"noresult","looser"))

образец данных Team1 победитель победа / поражение х1 х1 х1 х1 х1 х1 х2 х3 х3 х1 х1 х1 х1 х4 х4 х1 х1 х1 x1 NA NA x1 NA NA

Я хочу столбец выигрыша / проигрыша, основанный на Team1 и победителе.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Вариант 1

Используйте data$winner на другой стороне операции ИЛИ.

data$Team1=factor(data$Team1)

y=levels(data$Team1)

data$win_loss=ifelse(data$winner==y[2] | data$winner==y[1], "winner",
              ifelse(is.na(data$winner),"noresult","loser"))

Вариант 2

Вызовите вектор y[1:2] и используйте оператор %in%.

data$Team1=factor(data$Team1)

y=levels(data$Team1)

data$win_loss=ifelse(data$winner %in% y[1:2], "winner",
              ifelse(is.na(data$winner),"noresult","loser"))
0 голосов
/ 12 января 2019

Вы можете сделать это в два этапа, чтобы все было просто:

# replace NA
data$Team1[is.na(data$Team1)] <- 'noresult'

# replace other values
data$Team1 <- ifelse(data$Team1 %in% levels(data$Team1), 'winner', 'loser')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...