г locf несколько столбцов и сгруппировать по - PullRequest
0 голосов
/ 06 января 2020

Мой вопрос состоит из 2 частей: во-первых, я хочу выполнить последнее наблюдение, перенесенное (или завершенное) с использованием фрейма данных, аналогичного приведенному ниже. Итак, пропущенный год / месяц должен быть создан, и впоследствии значения для X1 и X2 должны быть перенесены вперед.

set.seed(1)
df <- data.frame(year = sort(rep(c(2018,2019),4)),
                 month = c(1,2,5,8,1,2,3,6),
                 X1 = sort(sample(1:100,8)),
                 X2 = sort(sample(1:100,8)))

Желаемый результат должен быть:

   year month X1 X2
1  2018     1 20  7
2  2018     2 27 18
3  2018     3 27 18
4  2018     4 27 18
5  2018     5 37 21
6  2018     6 37 21
7  2018     7 37 21
8  2018     8 57 37
9  2018     9 57 37
10 2018    10 57 37
11 2018    11 57 37
12 2018    12 57 37
13 2019     1 62 47
14 2019     2 86 63
15 2019     3 89 66
16 2019     4 89 66
17 2019     5 89 66
18 2019     6 97 73
19 2019     7 97 73
20 2019     8 97 73
21 2019     9 97 73
22 2019    10 97 73
23 2019    11 97 73
24 2019    12 97 73

Кроме того, у меня есть некоторые переменные, которые я хотел бы сгруппировать по. Поэтому, если у меня есть переменная под названием «Группа», состоящая из значений 1 и 2, я хочу, чтобы описанный выше LOCF выполнялся для обеих групп отдельно.

1 Ответ

0 голосов
/ 06 января 2020

Семя возвращает разные данные для меня, но я думаю, что вы пытаетесь сделать, это комбинация complete и fill

library(tidyr)
df %>% complete(year, month = 1:12) %>% fill(X1, X2)
...