【问题标题】:R: aggregate by ID and find min Date and TimeR:按 ID 聚合并找到最小日期和时间
【发布时间】:2012-03-25 23:08:42
【问题描述】:

我是一名 R 初学者,在以下非常简单的问题上遇到困难; 我有以下交易数据:

Data
Row#ID     Lable    Date          Time
4   15275   John    2000-05-16    16:15:00
7   15275   John    2000-05-16    16:25:00
22  15276   Bob     2000-07-04    18:05:00
25  15276   Bob     2000-08-07    05:23:00
10  1234    Kate    2000-06-17    18:07:00
13  1234    Kate    2000-06-21    06:49:00 

并且需要为每个ID生成一个唯一的条目,具有最小的日期和最小的时间, 类似这样:

Row#    ID          Lable   Date        Time
        15275   John        2000-05-16  16:15:00
        15276   Bob         2000-07-04  18:05:00
        1234    Kate        2000-06-17  18:07:00

我试过了

unique<-aggregate(Date$Date ,list(Data$ID, Data$Time,unique_Data$Lable ), min)

无济于事。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 您应该发布 str(Data) 或 dput(Data)。否则,这些列属于什么类别的模糊性将无法提供可靠的答案。
  • 加一个以获得准确的标题

标签: r date time unique aggregate


【解决方案1】:

如果数据和时间列属于“字符”类或任何其他有min 方法的类(但特别是如果其中任何一个属于“因素”类),您可以使用:

mins <-aggregate(Data[ , c("Date", "Time")]  ,list(Data$ID) , min)
mins

注意到有必要涵盖 class=="factor' 问题,这甚至涵盖了这种可能性;

mins <-aggregate(Data[ , c("Date", "Time")]  ,list(Data$ID) , 
                             function(x) min(as.character(x)) )

【讨论】:

  • 感谢您的快速回复 DWin,日期和时间属于“因素”类,但使用 as.character 进行转换,您的代码运行良好 - 感谢磨坊,为 ameature 帖子道歉 :)跨度>
猜你喜欢
  • 2018-08-11
  • 2018-04-12
  • 2015-01-08
  • 2017-06-24
  • 1970-01-01
  • 2021-11-18
  • 2013-06-28
  • 2018-07-21
  • 2022-11-30
相关资源
最近更新 更多