У меня есть следующий фрейм данных:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Это выглядит так:
# A tibble: 5 x 2
source score
<chr> <dbl>
1 a 10 . # current max value
2 b 5
3 c NA
4 d 3
5 e NA
То, что я хочу сделать, это заменить NA
в столбце оценки значения в диапазоне для существующих и max + n
далее. Где n
диапазон от 1 до общего числа строкdf
В результате этого (ручной код):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Как я могу этого достичь?
seq(which(is.na(df$score)))
до1:sum(is.na(df$score))
Вот
dplyr
подход,который дает,
источник
С
dplyr
:Результат:
источник
dplyr
Раствор.источник
Еще один, очень похожий на решение ThomasIsCoding:
источник
Не совсем элегантно по сравнению с решениями base R, но все же возможно:
Или в одной строке, но немного медленнее:
источник