【发布时间】:2020-04-28 15:51:39
【问题描述】:
我有一个包含一些自变量和一个响应变量的数据集。由于实验室估计的修正,一些响应值发生了变化。所以我需要用“新”观察的子集“更新”旧数据库。
我的问题是如何将“旧”值替换为整个集合的“新”观察子集?我可以一一使用 mutate 和 ifelse 来做到这一点,但实际的数据库非常庞大。但我需要自动执行此操作。
这是我的可重现示例:
data.old <- read.csv(text = "
year,location,treat,date,rep,response
2015,loc_a,High,1,1,0.806497184
2015,loc_a,High,1,2,0.571959654
2015,loc_a,High,1,1,0.019984888
2015,loc_a,High,1,2,0.526432749
2015,loc_a,High,2,1,0.325492808
2015,loc_a,High,2,2,0.263060123
2015,loc_a,High,2,1,0.057942716
2015,loc_a,High,2,2,0.677159318
2015,loc_a,Medium,1,1,0.01864298
2015,loc_a,Medium,1,2,0.677991164
2015,loc_a,Medium,1,1,0.316242859
2015,loc_a,Medium,1,2,0.803863895
2015,loc_a,Medium,2,1,0.645955727
2015,loc_a,Medium,2,2,0.856398777
2015,loc_a,Medium,2,1,0.252374162
2015,loc_a,Medium,2,2,0.793597331
2015,loc_a,Low,1,1,0.592899207
2015,loc_a,Low,1,2,0.293483001
2015,loc_a,Low,1,1,0.185614099
2015,loc_a,Low,1,2,0.148539171
2015,loc_a,Low,2,1,0.540534982
2015,loc_a,Low,2,2,0.391441647
2015,loc_a,Low,2,1,0.579447499
2015,loc_a,Low,2,2,0.298908079
")
new.data <- read.csv(text = "
treat,date,rep,response
High,1,2,2.3
High,2,1,2.1
Medium,1,2,1.2
Low,1,1,2.5
Low,2,1,2.2
Low,2,2,1.5
")
data.old.updated <- data.old %>%
mutate(response = ifelse(treat == "High" &
date == "1" &
rep == "2", 2.3, response))
【问题讨论】: