应用 ifelse 函数转换数据框中的整列

Applying ifelse function to transform entire column in data frame

我有一个这样的数据框:

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

如果 A 的值小于 0,我想将 df$y 的值乘以 -1,就像这里的情况一样。所以它不是 (-1, -2, 3, 1),而是 (1, 2, -3, -1)

我得到的最接近的是:

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

谢谢!

你可以这样做:

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