要根据其他行中的条件用type==NA
标记行。
条件是;
查找type!=NA
行,并使用其sd_value确定type==NA
行的新标签。 type2
那样
df <- data.frame(value = c(0.5,0.6,1,1.2), sd_value=c(0.1,0.5,0.2,0.8),
type = c("good", NA,"bad",NA))
value sd_value type
1 0.5 0.1 good
2 0.6 0.5 NA
3 1.0 0.2 bad
4 1.2 0.8 NA
第二行值位于type=="good"
的2 * sd_value内,第四行值位于type=="bad"
的2 * sd_value内,因此应标记type
列中的NA行“好”和“坏”。
我尝试过
library(dplyr)
df%>%
mutate(type2=ifelse(is.na(type),as.character(type[which(value>value-sd_value*2&value<value+sd_value*2)]),NA))
value sd_value type type2
1 0.5 0.1 good good
2 0.6 0.5 NA NA
3 1.0 0.2 bad bad
4 1.2 0.8 NA NA
但预期输出应该是
value sd_value type type2
1 0.5 0.1 good good
2 0.6 0.5 NA good
3 1.0 0.2 bad bad
4 1.2 0.8 NA bad
如何分配我想要的type2列?
thx
答案 0 :(得分:0)
尝试一下:
library(tidyverse)
df %>%
mutate(type2 = case_when(is.na(type) &
(value > value - 2*sd_value &
value < value - 2*sd_value) ~ "good",
is.na(type) ~ "bad",
TRUE ~ type))