代码之家  ›  专栏  ›  技术社区  ›  elliot

如何整理data_框架中的巨大空白?

  •  1
  • elliot  · 技术社区  · 7 年前

    我从大约15000行的网络中提取了一些数据。日期列在数据的每个“块段”的开头有一个日期。其中约25%为空白。这是一个专栏,将有一个2010年的单元格,然后是NA的一段时间,然后是2010年。基本上,日期是一样的。直到它改变。我提取了一个日期变量,它看起来像以下代码中源列的date\u:

    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\u from\u source列编码为Date\u tidy列。我试过使用group_by and lag方法,但我在旋转轮子。谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   moodymudskipper    7 年前

    你在找 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