J'ai la trame de données suivante:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Cela ressemble à ceci:
# 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
Ce que je veux faire, c'est de remplacer NA
dans la colonne de score par des valeurs allant de existantes à max + n
partir. Où n
va de 1 au nombre total de lignes de ladf
Il en résulte (codé à la main):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Comment puis-je y parvenir?
seq(which(is.na(df$score)))
à1:sum(is.na(df$score))
Voici une
dplyr
approche,qui donne,
la source
Avec
dplyr
:Résultat:
la source
Une
dplyr
solution.la source
Un autre, assez similaire à la solution de ThomasIsCoding:
la source
Pas tout à fait élégant par rapport aux solutions de base R, mais toujours possible:
Ou en une seule ligne mais un peu plus lentement:
la source