имеет следующий тип данных и хочет пометить свои строки NA
, проверив строки i-1 и i + 1 строк NA
.
test <- data.frame(sd_value=c(77,18,3,16,32,76),
value=c(5400,6900,7080,1892,4207,4403),
label=c(c("good",NA,"unable"),c("bads",NA,"good")))
> test
sd_value value label
1 77 5400 good
2 18 6900 <NA>
3 3 7080 unable
4 16 1892 bads
5 32 4207 <NA>
6 76 4403 good
Условие, которое я хочу выполнитьпометить NA
строки
на простом рисунке: сравните значение предыдущей и следующей строк со строкой NA
.если разница <200, используйте метку этой строки для строки <code>NA.
Существует одно специальное условие, если предыдущая или следующая строка good
.
, если разница между i-1 или i + 1 строкой NA
и diff (значением) <200 и такая же, как для diff (sd_value) <50, используйте i-1 или iМетка строки +1, которая удовлетворяет условию. </p>
, если разность i + 1 помечена good
и строка diff (значение) <200 и такая же, как для diff (sd_value) <50 useновая <code>eww! метка.
ожидаемый результат
> test
sd_value value label
1 77 5400 good
2 18 6900 unable
3 3 7080 unable
4 16 1892 bads
5 32 4207 eww!
6 76 4403 good
проверка значений diff i-1 и i + 1
> test%>%
+ mutate(diff_val=c(0,diff(value)), diff_sd_val=c(0,diff(sd_value)))
sd_value value label diff_val diff_sd_val
1 77 5400 good 0 0
2 18 6900 <NA> 1500 -59
3 3 7080 unable 180 -15
4 16 1892 bads -5188 13
5 32 4207 <NA> 2315 16
6 76 4403 good 196 44