Я хотел бы пометить строки на основе условия в других строках.
В основном, я ищу, если строка - NA
, тогда найдите строку с не-NA и используйте ее sd_value
столбец, чтобы решить, маркировать ли строку NA ее меткой, иначе пометить ее NA.Я надеюсь, что это объяснение простое.
Итак, допустим, у нас есть
df <- data.frame(value = c(0.5,1,0.6,1.2), sd_value=c(0.1,0.5,0.2,0.8),
label = c("good", "bad",NA,NA))
> df
value sd_value label
1 0.5 0.1 good
2 1.0 0.1 bad
3 0.6 0.5 NA
4 1.2 0.8 NA
для маркировки, например, строки 3, мне нужно проверить это значение строки и затем проверить, находятся ли они в или нетмежду 'good'
или 'bad'
значением ± 2 * sd_value.Если это так, назовите их good
или bad
.
ожидаемый результат
> df
value sd_value label
1 0.5 0.1 good
2 1.0 0.1 bad
3 0.6 0.5 good #because 0.6 is ±2*sd_value of 1st row value
4 1.2 0.8 bad #because 1.2 is ±2*sd_value of 2nd row value
, чтобы обобщить вопрос. Допустим, у нас есть такие данные
df <- data.frame(value = c(0.5, 1,8, 1.2, 2.4,0.4,6,2,5.7, 9),
sd_value=c(0.1, 0.1,1, 0.2,0.2,0.1,0.4,0.2,0.1,0.1),
label = c("good",NA,"beautiful","bad", NA,NA,"ugly","dirty",NA,NA))
> df
value sd_value label
1 0.5 0.1 good
2 1.0 0.1 <NA>
3 8.0 1.0 beautiful
4 1.2 0.2 bad
5 2.4 0.2 <NA>
6 0.4 0.1 <NA>
7 6.0 0.4 ugly
8 2.0 0.2 dirty
9 5.7 0.1 <NA>
10 9.0 0.1 <NA>
Исходя из условий, ожидаемый результат должен выглядеть следующим образом:
> df
value sd_value label
1 0.5 0.1 good #original label
2 1.0 0.1 bad
3 8.0 1.0 beautiful #original label
4 1.2 0.2 bad
5 2.4 0.2 dirty
6 0.4 0.1 good
7 6.0 0.4 ugly #original label
8 2.0 0.2 dirty #original label
9 5.7 0.1 ugly
10 9.0 0.1 beautiful
- эти измененные строки NA основаны на ±2*sd_value
значения строк не-NA.