在某些条件下编辑数据框

时间:2018-10-13 15:15:38

标签: r dataframe if-statement

我有一个数据框,并希望根据一条简单规则删除一些特定情况:如果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解决这个问题?感谢您的帮助。

1 个答案:

答案 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))