使用dplyr将某些值设置为NA

时间:2015-01-12 19:06:07

标签: r dplyr

我正在尝试用dplyr(data set = dat,variable = x)找出一种简单的方法来做这样的事情:

day$x[dat$x<0]=NA

应该很简单,但这是我现在能做的最好的事情。有更简单的方法吗?

dat =  dat %>% mutate(x=ifelse(x<0,NA,x))

3 个答案:

答案 0 :(得分:14)

您可以使用is.na<-功能:

dat %>% mutate(x = "is.na<-"(x, x < 0))

或者您可以使用数学运算符:

dat %>% mutate(x = NA ^ (x < 0) * x)

答案 1 :(得分:1)

dplyr中最自然的方法是使用na_if函数。

对于一个变量:

dat %<>% mutate(x = na_if(x, x < 0))

对于所有变量:

dat %<>% mutate_all(~ na_if(., . < 0))

如果有兴趣替换特定值,而不是替换所有变量的范围:

dat %<>% mutate_all(na_if, 0)

请注意,我正在使用%<>%软件包中的magrittr运算符。

答案 2 :(得分:0)

直接在replace列上使用x而不使用mutate也可以。

dat$x <- replace(dat$x, dat$x<0, NA)