Tengo el siguiente marco de datos:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Se parece a esto:
# 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
Lo que quiero hacer es reemplazar NA
en la columna de puntuación con valores que varían para los existentes en max + n
adelante. Donde n
rango de 1 a número total de filas de ladf
Resultando en esto (codificado a mano):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
¿Cómo puedo lograr eso?
seq(which(is.na(df$score)))
a1:sum(is.na(df$score))
Aquí hay un
dplyr
enfoque,lo que da,
fuente
Con
dplyr
:Resultado:
fuente
Una
dplyr
soluciónfuente
Otro, bastante similar a la solución de ThomasIsCoding:
fuente
No es muy elegante en comparación con las soluciones base R, pero aún es posible:
O en una línea pero un poco más lento:
fuente