我尝试做的是从主数据集中过滤子集,修改值,然后将它们替换回主数据集。例如:
x<-diamonds %>% filter(color == "E") %>% mutate(editPrice= price/4)
所以在这个例子中,我将替换颜色&#34; E&#34;主要&#34;钻石的价格&#34;用我的&#34; editPrice&#34;变量,没有过度写入其他颜色值。
我目前的解决方案是根据该变量为子集和主集创建一个唯一的ID然后right_join
,但这会在我的总数据集中产生大量的NA
。例如:
x$id<- paste(x$cut,"_",x$clarity,"_",x$table)
x1<-diamonds %>% filter(color != "E")
x1$id<- paste(x1$cut,"_",x1$clarity,"_",x1$table)
right_join(x1,x,by="id")
感谢您的帮助!
答案 0 :(得分:2)
我们可以使用case_when
library(dplyr)
diamonds %>%
mutate(editPrice = case_when(color == "E" ~ price/4,
TRUE ~ as.numeric(price)))
或if_else
或ifelse
diamonds %>%
mutate(editPrice = if_else(color == "E", price/4, as.numeric(price)))