【问题标题】:Aggregating rows and adding new variables聚合行并添加新变量
【发布时间】:2017-02-03 02:53:10
【问题描述】:

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

有谁知道最好的方法是什么?我使用 R,在 R 中是否有任何最佳方法可以做到这一点?

【问题讨论】:

    标签: r aggregate


    【解决方案1】:

    你的意思是这样的吗?

    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 如下:

      id       date
    1  1 1992-02-26
    2  1 1992-02-27
    3  2 1992-01-14
    4  3 1992-02-28
    5  2 1992-02-01
    

    使用以下技巧

    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>
    

    【讨论】:

    • 是的,我就是这个意思。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多