Hai saya menggunakan slide_index () untuk mengambil nilai di jendela waktu untuk setiap baris dalam bingkai data. Namun, untuk setiap baris saya juga akan membandingkan nilai baris saat ini terhadap nilai yang diambil untuk ...

1
r_so_throwaway 5 April 2021, 23:14

1 menjawab

Jawaban Terbaik

Jika ada duplikat, lakukan pengindeksan dengan urutan nilai dan kemudian dengan map2 Hapus indeks itu dan dapatkan nilai yang sesuai

library(purrr)
library(slider)
i1 <- seq_along(x)
map2(slide_index(i1, i, ~.x, .before = 2, .after = 2),
            i1,  ~ x[setdiff(.x, .y)])

-keluaran

[[1]]
[1] 2 2

[[2]]
[1] 1 2 4

[[3]]
[1] 1 2 4 5

[[4]]
[1] 2 2 5 6

[[5]]
[1] 2 4 6 7

[[6]]
[1] 4 5 7 8

[[7]]
[1] 5 6 8 9

[[8]]
[1]  6  7  9 10

[[9]]
[1]  7  8 10 11

[[10]]
[1]  8  9 11 12

[[11]]
[1]  9 10 12 13

[[12]]
[1] 10 11 13 14

[[13]]
[1] 11 12 14 15

[[14]]
[1] 12 13 15 16

[[15]]
[1] 13 14 16

[[16]]
[1] 14 15

Data

x <- c(c(1, 2, 2),rep(4:16)) 
i <- as.Date("2019-08-15") + c(0:15)
2
akrun 5 April 2021, 20:47