我有一个数据框,并希望根据一条简单规则删除一些特定情况:如果x
等于2,则y
应该是NA
。
这里是一个例子:
x <- c(1, 2, 1, 2, 1, 2, 1, 2)
y <- c(5, 5, NA, NA, 6, 6, 4, 4)
df <- data.frame(x, y)
df
x y
1 1 5
2 2 5
3 1 NA
4 2 NA
5 1 6
6 2 6
7 1 4
8 2 4
输出应如下所示:
x y
1 1 5
2 2 NA
3 1 NA
4 2 NA
5 1 6
6 2 NA
7 1 4
8 2 NA
有没有办法用ifelse
解决这个问题?感谢您的帮助。
答案 0 :(得分:2)
您可以
df$y[df$x == 2] <- NA
df
# x y
#1 1 5
#2 2 NA
#3 1 NA
#4 2 NA
#5 1 6
#6 2 NA
#7 1 4
#8 2 NA
或与replace
df$y <- replace(df$y, df$x == 2, NA)
在dplyr
mutate
library(dplyr)
df %>%
mutate(y = replace(y, x==2, NA))
或者是ifelse
版本
df$y <- ifelse(df$x == 2, NA, df$y)
df %>%
mutate(y = ifelse(x == 2, NA, y))