重新加入数据框中的顺序记录行

Rejoin sequential record rows in dataframe

我正在处理一个数据集,其中的记录行被一分为二。

我当前使用的数据如下所示:

df <- data.frame(
  row_id = 1:10,
  V1 = c("burger", "01-01-2016", "chicken patty", "01-02-2016", "veggie burger", "01-03-2016", "turkey burger", "01-01-2016", "veggie burger", "01-02-2016"), 
  V2 = c("cheese", "very tasty", "onions", "ok", NA, "tasty", "cheese", "ok", "onions", NA),
  V3 = c("bun", NA, "wrap", NA, "bun", NA, "wrap", NA, NA, NA)
)


    row_id            V1               V2           V3
      1              burger          cheese         bun
      2              01-01-2016      very tasty     NA
      3              chicken patty   onions         wrap    
      4              01-02-2016      ok             NA
      5              veggie burger   NA             bun
      6              01-03-2016      tasty          NA
      7              turkey burger   cheese         wrap
      8              01-01-2016      ok             NA
      9              veggie burger   onions         NA
      10             01-02-2016      NA             NA

但是,我需要将适当的记录行组合在一起, 让我的数据看起来像这样:

    row_id            V1               V2           V3          V4            V5
      1              burger          cheese         bun       01-01-2016      very tasty
      2              chicken patty   onions         wrap      01-02-2016      ok
      3              veggie burger   NA             bun       01-03-2016      tasty
      4              turkey burger   cheese         wrap      01-01-2016      ok
      5              veggie burger   onions         NA        01-02-2016      NA

我考虑过在附加前一行的地方做点什么。但是,我不知道我将如何写这样一个过程。

我目前正在使用 dplyr 库,因此使用 dplyr 发布的任何回复都会格外有用。

我们可以 cbind() 偶数行和非偶数行并删除不相关的列:

cbind(df[c(TRUE, FALSE), -1], df[c(FALSE, TRUE), -c(1, 4)])
             V1     V2   V3         V1         V2
1        burger cheese  bun 01-01-2016 very tasty
3 chicken patty onions wrap 01-02-2016         ok
5 veggie burger   <NA>  bun 01-03-2016      tasty
7 turkey burger cheese wrap 01-01-2016         ok
9 veggie burger onions <NA> 01-02-2016       <NA>