应用 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
我有一个这样的数据框:
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