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)
我应该怎么办?谢谢。
我看到你更喜欢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)