将多行与不同列中的日期数据合并

时间:2019-04-24 23:28:16

标签: r dplyr

我有一个类似于以下格式的数据框,尽管orderID后面还有更多的组,需要保持相同:

orderID <- c('1234', '1234')
incoming <- as.Date(c('2019-3-3',NA))
outgoing <- as.Date(c(NA,'2019-3-25'))
df <- data.frame(orderID, incoming, outgoing)

df
  orderID   incoming   outgoing
1    1234 2019-03-03       <NA>
2    1234       <NA> 2019-03-25

我正在尝试将每个组的行合并到下面:

df_expected
  orderID   incoming   outgoing
1    1234 2019-03-03 2019-03-25

我尝试使用下面的dplyr代码,但未如预期的那样工作-我得到了NA。希望能提供一些帮助,并感谢您的帮助。

#code that didn't work
df %>% group_by(orderID) %>% 
    summarise(incoming=min(incoming), outgoing = min(outgoing))

1 个答案:

答案 0 :(得分:0)

它应该可以完成工作,但是您缺少na.rm = TRUE函数的min选项来使其正常工作(因为如果您不这样做,则会将NA的值视为最小值)忽略它)。因此,这应该可行:

df %>% 
group_by(orderID) %>% 
summarise(incoming = min(incoming, na.rm = TRUE),
          outgoing = min(outgoing, na.rm = TRUE)
         )

输出:

# A tibble: 1 x 3
#   orderID incoming   outgoing  
#   <fct>    <date>       <date>    
#1  1234     2019-03-03   2019-03-25

希望有帮助。