R 聚合行并添加新变量

R 聚合行并添加新变量,r,aggregate,R,Aggregate,我有一个包含数千行的数据框,其中有我感兴趣的两列,ID和date。某些ID重复,但日期不重复。我希望每个ID只有一行,然后将不同的日期存储到列中,比如:UniqueID、date1、date2等等 有人知道最好的方法是什么吗?我使用R,在R中有没有最佳的方法来实现这一点?你的意思是这样的吗 require(dplyr) require(tidyr) dates <- c("02/26/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")

我有一个包含数千行的数据框,其中有我感兴趣的两列,ID和date。某些ID重复,但日期不重复。我希望每个ID只有一行,然后将不同的日期存储到列中,比如:UniqueID、date1、date2等等


有人知道最好的方法是什么吗?我使用R,在R中有没有最佳的方法来实现这一点?

你的意思是这样的吗

require(dplyr)
require(tidyr)
dates <- c("02/26/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
dat <- data.frame(id = c(1,1,2,3,2), date = as.Date(dates, "%m/%d/%y"))
用下面的技巧

dat %>% 
  select(id, date) %>% #here you select the columns that you want to use
  group_by(id) %>% 
  mutate(seq = paste0("date", row_number(id))) %>% 
  spread(seq, date)
变成这样:

Source: local data frame [3 x 3]
Groups: id [3]

     id      date1      date2
* <dbl>     <date>     <date>
1     1 1992-02-26 1992-02-27
2     2 1992-01-14 1992-02-01
3     3 1992-02-28       <NA>
来源:本地数据帧[3 x 3]
组别:id[3]
id date1 date2
*           
1     1 1992-02-26 1992-02-27
2     2 1992-01-14 1992-02-01
3     3 1992-02-28       

是的,我就是这个意思。谢谢你!
Source: local data frame [3 x 3]
Groups: id [3]

     id      date1      date2
* <dbl>     <date>     <date>
1     1 1992-02-26 1992-02-27
2     2 1992-01-14 1992-02-01
3     3 1992-02-28       <NA>