我正在尝试用dplyr(data set = dat,variable = x)找出一种简单的方法来做这样的事情:
day$x[dat$x<0]=NA
应该很简单,但这是我现在能做的最好的事情。有更简单的方法吗?
dat = dat %>% mutate(x=ifelse(x<0,NA,x))
答案 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)