如何按天合并上一行和下一行

Ken*_*hen -1 r data.table

我有一个data.table,我想使用Time列来合并数据以减少数据。

library(data.table)
DT <- data.table(ID=c("A","A","A","B","B","C","C","C","C","D"),
                 Time=c("2019-01-16 15:52:03","2019-01-16 16:01:04","2019-01-26 01:22:54",
                       "2019-02-18 17:00:08","2019-02-18 17:05:44",
                       "2019-03-16 13:23:42","2019-03-16 15:52:03","2019-06-04 12:01:04","2019-06-04 16:20:54",
                       "2019-03-16 13:23:42"),
                 place=c("Vienna","France","Berlin","Rome","Washington",
                         "Bangkok","Ottawa","Tokyo","SouthKorea","Singapore"))
Run Code Online (Sandbox Code Playgroud)

如果在当天,同一天、相同的Id会被合并。

不同的日子,无需合并

输出:

     ID      Time           place
 1    A   2019-01-16    Vienna-France
 2    A   2019-01-26        Berlin
 3    B   2019-02-18    Rome-Washington
 4    C   2019-03-16    Bangkok-Ottawa
 5    C   2019-06-04    Tokyo-SouthKorea
 6    D   2019-03-16      Singapore 
Run Code Online (Sandbox Code Playgroud)

我应该怎么办?谢谢。

tmf*_*mnk 5

我看到你更喜欢data.table(为此请参阅@January 的帖子),但是,这里有一个dplyr解决方案:

DT %>%
 group_by(ID, Time = as.Date(Time, format = "%Y-%m-%d")) %>%
 summarise(place = paste(place, collapse = "-"))

  ID    Time       place           
  <chr> <date>     <chr>           
1 A     2019-01-16 Vienna-France   
2 A     2019-01-26 Berlin          
3 B     2019-02-18 Rome-Washington 
4 C     2019-03-16 Bangkok-Ottawa  
5 C     2019-06-04 Tokyo-SouthKorea
6 D     2019-03-16 Singapore   
Run Code Online (Sandbox Code Playgroud)