Применение функции ifelse для преобразования всего столбца во фрейме данных - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть фрейм данных, такой как:

df <- data.frame(x = c("A", "B", "C", "D"),
                 y = c(-1, -2, 3, 1))

И я хочу умножить значения df$y на -1, если значение A меньше 0, как идело здесь.Таким образом, вместо того, чтобы быть (-1, -2, 3, 1), оно становится (1, 2, -3, -1).

Самое близкое, что я получил, это:

df$y <- ifelse(df[df$x == "A", 2] < 0, df$y*-1, df$y)

Спасибо!

1 Ответ

0 голосов
/ 25 ноября 2018

Вы можете просто сделать:

df$y <- ifelse(df$x == "A" & df$y < 0, df$y * -1, df$y)

Если вы хотите умножить все, то что-то вроде:

df$y <- if (any(df$x == "A" & df$y < 0)) df$y * -1 else df$y
...