我的数据如下,数据如下:
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的新手,所以任何指针都会非常受欢迎。
答案 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)
我可能会将ddply
和transform
解决方案与this previous post中使用的方法结合使用,这需要安装和加载包plyr
和zoo
。我不确定将最小日期以来的月份包括在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 )