在这里,我有一张桌子,桌子上有一些不同深度的观察值,如果观察值7为负,我想用NA代替少量观察值,但否则应保留其值。 例如,如果深度= 2的obs 7为负数(例如-8),则将NA的观测值1,2,7和9替换为NA。否则什么都不做
worksheet <- some_data%>%
do_some_stuff%
mutate_at(vars(obs7,obs1,obs2,obs9), if_else(obs7<=0,NA, ??)
答案 0 :(得分:4)
在这里,我们只需要更改“ ob7”小于或等于0的列中的值。在这种情况下,“ yes”部分为NA
,而“ no”部分为数据列本身。在tidyverse中,由于存在.
~
library(tidyverse)
some_data %>%
mutate_at(vars(obs7, obs1, obs2, obs9), list(~ ifelse(ob7 <= 0, NA, .)))
注意:在这里,我们使用ifelse
而不是if_else
,因为if_else
特别关注类型检查,从这个问题出发,不清楚所关注的列的类型。如果列为整数,则将NA
替换为NA_integer_
,如果列为双数,则将NA_real_
内的if_else