R вставить номер недели из вектора и затем выполнить na.locf - PullRequest
0 голосов
/ 06 декабря 2018

Для фрейма данных, аналогичного приведенному ниже (но значительно большего размера)) я хочу добавить номера пропущенных недель из вектора (вектор называется неделями ниже).В конце каждое значение для var1 должно иметь 4 строки, состоящие из недели 40–42, поэтому значение, введенное для недели, может быть различным для разных значений var1.Первоначально вставленные строки могут иметь значение NA, но в качестве второго шага я хотел бы выполнить na.locf для каждого значения var1.кто-нибудь знает, как это сделать?

Пример фрейма данных:

dat <- data.frame(var1 = rep(c('a','b','c','d'),3),
                  week = c(rep(40,4),rep(41,4),rep(42,4)),
                  value = c(2,3,3,2,4,5,5,6,8,9,10,10))
dat <- dat[-c(6,11), ]

weeks <- c(40:42)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Привет, вы уже рассмотрели tidyr :: complete и dplyr :: fill ().

library(dplyr)
library(tidyr)

complete(dat, week = 40:42, var1 = c("a", "b", "c", "d")) %>% fill(value, .direction = 
"down")
0 голосов
/ 06 декабря 2018

Как это?

dat %>% 
   tidyr::complete(var1,week) %>% 
   group_by(var1) %>% 
   arrange(week) %>% 
   tidyr::fill(value)
# A tibble: 12 x 3
# Groups:   var1 [4]
   var1   week value
   <fct> <dbl> <dbl>
 1 a        40     2
 2 a        41     4
 3 a        42     8
 4 b        40     3
 5 b        41     3
 6 b        42     9
 7 c        40     3
 8 c        41     5
 9 c        42     5
10 d        40     2
11 d        41     6
12 d        42    10
...