时间序列:从单个列中的多个类别的初始值中减去后续值

时间:2013-11-19 01:04:55

标签: r

我有一个像这样的人:

cat<-c("a","a","a","b","b","b","c","c","c")
julian_day<-c(100,112,123,192,207,237,34,87,102)
dat<-data.frame(cat,julian_day)

在这个例子中,我有三个类别,每个类别有三个观察。我想从随后的观察中减去每个类别的第一个观察结果,并将这些信息存储在一个新的列中。

结果如下:

cat<-c("a","a","a","b","b","b","c","c","c")
julian_day<-c(100,112,123,192,207,237,34,87,102)
difference<-c(0,12,23,0,15,45,0,23,68)
dat<-data.frame(cat,julian_day,difference)

感谢。

1 个答案:

答案 0 :(得分:1)

使用ave

dat$difference <- ave(dat$julian_day,dat$cat,FUN=function(x)x-x[1])