Ich habe folgenden Datenrahmen:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Es sieht aus wie das:
# 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
Was ich tun möchte, ist, NA
in der Punktespalte durch Werte zu ersetzen , die für vorhandene max + n
weiter reichen . Wobei der n
Bereich von 1 bis zur Gesamtzahl der Zeilen desdf
Daraus resultiert (handcodiert):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Wie kann ich das erreichen?
seq(which(is.na(df$score)))
auf1:sum(is.na(df$score))
Hier ist ein
dplyr
Ansatz,was gibt,
quelle
Mit
dplyr
:Ergebnis:
quelle
Eine
dplyr
Lösung.quelle
Eine andere, die der Lösung von ThomasIsCoding ziemlich ähnlich ist:
quelle
Nicht ganz elegant im Vergleich zu den Basis-R-Lösungen, aber dennoch möglich:
Oder in einer Zeile, aber etwas langsamer:
quelle