Saya memiliki bingkai data berikut:
library(dplyr)
library(tibble)
df <- tibble(
source = c("a", "b", "c", "d", "e"),
score = c(10, 5, NA, 3, NA ) )
df
Ini terlihat seperti ini:
# 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
Yang ingin saya lakukan adalah mengganti NA
di kolom skor dengan nilai mulai dari yang sudah ada max + n
dan seterusnya. Di mana n
berkisar dari 1 hingga total jumlah barisdf
Menghasilkan ini (kode tangan):
source score
a 10
b 5
c 11 # obtained from 10 + 1
d 3
e 12 # obtained from 10 + 2
Bagaimana saya bisa mencapainya?
seq(which(is.na(df$score)))
menjadi1:sum(is.na(df$score))
Ini
dplyr
pendekatannya,pemberian yang mana,
sumber
Dengan
dplyr
:Hasil:
sumber
Sebuah
dplyr
solusi.sumber
Satu lagi, sangat mirip dengan solusi ThomasIsCoding:
sumber
Tidak cukup elegan dibandingkan dengan solusi base R, tetapi masih memungkinkan:
Atau dalam satu baris tetapi sedikit lebih lambat:
sumber