我正在从其他人的问题中回复一个答案,但有人可以告诉我,在进行更改之前,以下方法是否可用于满足多个条件?
library(dplyr)
library(magrittr)
df[df$tag=="ggyg",] %<>% mutate(tag="xxx")
我尝试了这个,但它没有用。
df[df$tag=="ggyg",] %<>% df[df$h.tank==2,] %<>% mutate(tag="xxx")
我正在尝试使用上述方法,因为它可以节省大量时间,而不是使用ifelse语句来满足条件。
谢谢!
答案 0 :(得分:2)
为什么不将条件合并到一个陈述中,而不是将条件加载到不同的条款中?
df[df$tag=="ggyg" & df$h.tank==2,] %<>% mutate(tag="xxx")
或者更具惯用性:
df %<>% mutate(tag = ifelse(tag == "ggyg" & h.tank == 2, "xxx", tag))
答案 1 :(得分:2)
以下是2个纯magrittr
/ dplyr
解决方案:
df %<>% inset(tag == "ggyg" & h.tank == 2,"tag","xxx") # pure magrittr
df %<>% mutate(tag = inset(tag,tag == "ggyg" & h.tank == 2, "xxx")) # magrittr & dplyr
一些可重复的例子:
cars2 <- head(cars)
# speed dist
# 1 4 2
# 2 4 10
# 3 7 4
# 4 7 22
# 5 8 16
# 6 9 10
cars2 %<>% inset(.$dist==4,"speed",value=1000)
cars2 %<>% mutate(speed = inset(speed,dist==22,2000))
# speed dist
# 1 4 2
# 2 4 10
# 3 1000 4
# 4 2000 22
# 5 8 16
# 6 9 10