如何根据不同的列获取日期差异

时间:2013-09-13 16:24:58

标签: r

我的数据如下,数据如下:

df <- read.table( text = "ID           Date              Value
001          2012-01-15        8.6
003          2000-05-03        10.1
001          2005-03-30        7.3
1002         2013-07-05        1.4" , h = TRUE , stringsAsFactors = FALSE )

#    ID       Date Value
#1    1 2012-01-15   8.6
#2    3 2000-05-03  10.1
#3    1 2005-03-30   7.3
#4 1002 2013-07-05   1.4

我正在尝试获取每个ID的初始日期,然后获取该ID的每个后续值的月数。我可以使用聚合完全获得每个ID的最小日期,但我很难知道如何完成其​​余的工作。

有关如何实现这一目标的任何想法?我是R的新手,所以任何指针都会非常受欢迎。

2 个答案:

答案 0 :(得分:0)

我会做类似下面的事情。几个月而不是几天,请看这个问题:Number of months between two dates

for(i in df$ID){   
  dates <- as.Date(as.vector(df[df$ID==i,"Date"]))   
  if(length(dates)>1){
    for(j in 2:length(dates)){
      days <- as.double(difftime(dates1[j],dates1[1],units="days"))
      //do something
    }   
  } 
}

答案 1 :(得分:0)

我可能会将ddplytransform解决方案与this previous post中使用的方法结合使用,这需要安装和加载包plyrzoo。我不确定将最小日期以来的月份包括在0对您有用。

# Load packages    
require(plyr)
require(zoo)

# Convert "Date" to a date
df$Date = as.Date(df$Date)
ddply(df, .(ID), transform, 
      mon.since.min = (as.yearmon(Date) - as.yearmon(min(Date)))*12 )