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

时间:2018-11-25 17:32:53

标签: r dataframe if-statement grepl

我有一个这样的数据框:

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

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

我最近得到的是:

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以这样做:

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