Eu tenho o seguinte quadro de dados:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Se parece com isso:
# 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
O que eu quero fazer é substituir NA
na coluna de pontuação por valores que variam para os existentes em max + n
diante. Onde n
varia de 1 ao número total de linhas dodf
Resultando nisso (codificado manualmente):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Como posso conseguir isso?
seq(which(is.na(df$score)))
para1:sum(is.na(df$score))
Aqui está uma
dplyr
abordagem,que dá,
fonte
Com
dplyr
:Resultado:
fonte
Uma
dplyr
soluçãofonte
Outro, bastante semelhante à solução de ThomasIsCoding:
fonte
Não é muito elegante em comparação com as soluções R básicas, mas ainda é possível:
Ou em uma linha, mas um pouco mais lenta:
fonte