【问题标题】:Combining multiple rows with date data in different columns将多行与不同列中的日期数据结合起来
【发布时间】:2019-04-24 23:28:15
【问题描述】:

我有一个类似于以下格式的数据框,尽管我在 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。希望得到一些帮助,并在 dplyr 中。

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

【问题讨论】:

  • 添加na.rm = TRUE, df %&gt;% group_by(orderID) %&gt;% summarise(incoming=min(incoming, na.rm = TRUE), outgoing = min(outgoing, na.rm = TRUE)) 可以吗?

标签: r dplyr


【解决方案1】:

它应该可以完成这项工作,但是您缺少 min 函数的 na.rm = TRUE 选项以使其工作(因为如果您不忽略它,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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2017-04-06
    • 2021-10-17
    • 2011-04-30
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多