Mam następującą ramkę danych:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
To wygląda tak:
# 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
Chcę zastąpić NA
w kolumnie wyników wartościami od istniejących max + n
. Gdzie n
zakres od 1 do całkowitej liczby wierszydf
Wynikające z tego (ręcznie kodowane):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Jak mogę to osiągnąć?
seq(which(is.na(df$score)))
do1:sum(is.na(df$score))
Oto
dplyr
podejścieco daje,
źródło
Z
dplyr
:Wynik:
źródło
dplyr
Rozwiązaniem.źródło
Kolejne, całkiem podobne do rozwiązania ThomasIsCoding:
źródło
Nie dość elegancki w porównaniu do podstawowych rozwiązań R, ale wciąż możliwy:
Lub w jednej linii, ale nieco wolniej:
źródło