【发布时间】:2019-10-11 14:17:25
【问题描述】:
当现场工作人员观察在哪些地点 (Siteid) 种植了哪些树种 (SORTNR) 时,我正在尝试纠正在现场所犯的错误。不幸的是,不同站点所犯的错误并不相同。
我想在我的代码中表达的是:当 Siteid 和 SORTNR 是特定组合时,将 SORTNR 替换为正确的值。但是,当我随后检查数据时,所有 SORTNR 都是 NA。
如果我将其分解并仅运行一个重新编码块,则似乎调用中未包含的组合的变量 SORTNR 设置为 NA,并且运行这两个块将导致所有组合设置为不。
如何防止未提及的组合更改为 NA?我们可以不必明确声明我想用它们自己替换正确的值吗?
样本数据:
Siteid <- c(rep("F410", 10), "F411","F411","F411","F411","F411")
SORTNR <- c(1,2,4,5,8,9,10,11,12,2,12,14,28,15,12)
Dataframe <- data.frame(cbind(Siteid,SORTNR))
重新编码
#Recoding Block 1
Dataframe <- Dataframe %>% mutate(SORTNR=case_when(
Siteid=="F410" & SORTNR==1~2,
Siteid=="F410" & SORTNR==2~2,
Siteid=="F410" & SORTNR==4~28,
Siteid=="F410" & SORTNR==5~28,
Siteid=="F410" & SORTNR==8~28,
Siteid=="F410" & SORTNR==9~28,
Siteid=="F410" & SORTNR==10~27,
Siteid=="F410" & SORTNR==11~28,
Siteid=="F410" & SORTNR==12~28))
#Recoding Block 2
Dataframe <- Dataframe %>% mutate(SORTNR=case_when(
Siteid=="F411" & SORTNR==12~13,
Siteid=="F411" & SORTNR==28~29,
Siteid=="F411" & SORTNR==14~14,
Siteid=="F411" & SORTNR==15~15
【问题讨论】:
标签: r dplyr conditional-statements recode