使用df如下所示,使用dplyr我需要有条件地改变字段val1,val2,val3。
> df <- data.frame(
id = c(1,2),
loc=c("loc1", "loc2"),
val1=c(80,64), val2=c(240,32768), val3=c(32768, 64)
)
> df
id loc val1 val2 val3
1 1 loc1 80 240 32768
2 2 loc2 64 32768 64
如果值为&gt;,我需要将val1, val2, val3
中的值设置为NA
1000
df %>%
mutuate_at(vars(starts_with("v")), <what goes here>)
答案 0 :(得分:3)
mutate_at
replace
df %>%
mutate_at(vars(starts_with("v")), funs(replace(., .>1000, NA)))
# id loc val1 val2 val3
#1 1 loc1 80 240 NA
#2 2 loc2 64 NA 64
答案 1 :(得分:1)
您的数据采用不整齐的格式。在变异之前用gather
整理它:
library(tidyverse)
df %>%
gather("key", "val", val1, val2, val3) %>%
mutate(val = ifelse(val > 1000, NA, val))
如果您希望将数据帧恢复为原始的,不整洁的格式,则可以使用spread
df %>%
spread(key, val)