r - 合并 data.frame 中的两行

标签 r

类似于 Merge rows in one data.frameMerge two rows in one dataframe, when the rows are disjoint and contain nulls我面临以下问题,上述帖子确实可以提供帮助。

我拥有的数据看起来像这样

| Date     | Checkin | Origin | Checkout | Destination |
| 03-07-17 | 08:00   | A      |          |             |
| 03-07-17 |         | A      | 09:00    | B           |
| 03-07-17 | 17:00   | B      |          |             |
| 03-07-17 |         | B      | 18:00    | A           |
| 04-07-17 | 08:00   | A      |          |             |
| 04-07-17 |         | A      | 09:00    | B           |
| 04-07-17 | 17:00   | B      |          |             |
| 04-07-17 |         | B      | 18:00    | A           |

现在我想将其聚合为 4 行,如下所示:
| Date     | Checkin | Origin | Checkout | Destination |
| 03-07-17 | 08:00   | A      | 09:00    | B           |
| 03-07-17 | 17:00   | B      | 18:00    | A           |
| 04-07-17 | 08:00   | A      | 09:00    | B           |
| 04-07-17 | 17:00   | B      | 18:00    | A           |

有任何想法吗?
谢谢!

最佳答案

一个想法来自 dplyr ,

library(dplyr)

df %>% 
 group_by(Date, Origin) %>% 
 summarise_all(funs(trimws(paste(., collapse = ''))))

 A tibble: 4 x 5
 Groups:   Date [?]
        Date   Origin Checkin Checkout Destination
       <chr>    <chr>   <chr>    <chr>       <chr>
1  03-07-17   A         08:00    09:00           B
2  03-07-17   B         17:00    18:00           A
3  04-07-17   A         08:00    09:00           B
4  04-07-17   B         17:00    18:00           A


数据
dput(df)
structure(list(Date = c(" 03-07-17 ", " 03-07-17 ", " 03-07-17 ", 
" 03-07-17 ", " 04-07-17 ", " 04-07-17 ", " 04-07-17 ", " 04-07-17 "
), Checkin = c(" 08:00   ", "         ", " 17:00   ", "         ", 
" 08:00   ", "         ", " 17:00   ", "         "), Origin = c(" A      ", 
" A      ", " B      ", " B      ", " A      ", " A      ", " B      ", 
" B      "), Checkout = c("          ", " 09:00    ", "          ", 
" 18:00    ", "          ", " 09:00    ", "          ", " 18:00    "
), Destination = c("             ", " B           ", "             ", 
" A           ", "             ", " B           ", "             ", 
" A           ")), .Names = c("Date", "Checkin", "Origin", "Checkout", 
"Destination"), row.names = c(NA, -8L), class = "data.frame")

关于r - 合并 data.frame 中的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45298997/

相关文章:

r - 将多个列中的值转换为单一货币 - R 和priceR

c# - 有什么方法可以从R中调用.NET的字符串库吗?

r - 如何删除 R-Markdown block 输出中奇怪字符的显示?

r - 显示 GGplots 的最佳(或好)方式

r - 将唯一值拆分为多列的单独列

r - 在 R 中绘制方程

r - ggplot2:叠加两个图并使用两个图例

r - 将每日数据平均为每周数据

r - 如何只为规则中的特定列获取LHS和RHS的 Material ?

r - 如何在 R 中训练和交叉验证