如何整理data_frame中的大空格?

时间:2017-11-15 13:01:49

标签: r lag tidyr

我从网上获取了大约15,000行的数据。日期列的日期位于数据的每个“块部分”的开头。其中约25%为空白。所以它是一个列,将有一个2010年的单元格,然后NA有一段时间,然后是2010年。基本上,日期是一样的。 。 。直到它改变。我已经将日期变量拉出来,它看起来像以下代码中的Date_from源列:

data_frame(
  Date_from_source = 
    c(2010,rep(NA,2),2010,rep(NA,2),2011,rep(NA,3),2011,rep(NA,2),2012), 
  Date_tidy = c(rep(2010,6),rep(2011,7),2012))

我坚持如何将Data_from_source列编码为Date_tidy列。我尝试过使用group_by和lag方法,但我正在转动轮子。感谢。

1 个答案:

答案 0 :(得分:2)

您正在寻找tidyr::fill

library(tidyr)
library(dplyr)
df1 <- data_frame(
  Gender = sample(c('male','female'),14,T),
  Date_from_source = 
    c(2010,rep(NA,2),2010,rep(NA,2),2011,rep(NA,3),2011,rep(NA,2),2012), 
  Date_tidy = c(rep(2010,6),rep(2011,7),2012))

df1 %>% group_by(Gender) %>% fill(Date_from_source)

    # # A tibble: 14 x 3
    # # Groups:   Gender [2]
    # Gender Date_from_source Date_tidy
    # <chr>            <dbl>     <dbl>
    #  1 female               NA      2010
    #  2 female             2011      2011
    #  3 female             2011      2011
    #  4 female             2011      2011
    #  5 female             2011      2011
    #  6   male             2010      2010
    #  7   male             2010      2010
    #  8   male             2010      2010
    #  9   male             2010      2010
    # 10   male             2010      2010
    # 11   male             2010      2011
    # 12   male             2010      2011
    # 13   male             2010      2011
    # 14   male             2012      2012