将指标变量添加到长数据框中,以便当值从一年增加到下一年时

Ric*_*ron 2 r plyr

我有一个长数据框,有三列fyear,ticdcvt(财政年度,股票代码和总可转换债务).大约有18个财政年度和几千个代码.我想添加一个指标变量,每当dcvt从一年到下一年上升时都是一个变量.

我试过了ddply,但是我丢失了fyear专栏并且不确定如何取回专栏.

library(plyr)
temp <- data.frame(fyear = rep(1992:2009, 10), tic = rep(letters[1:10], each = 18), dcvt = rnorm(180, 200, 10))
my.fun <- function(x) x <- c(0, ifelse(tail(x, -1) - head(x, -1) > 0, 1, 0))
temp2 <- ddply(temp, "tic", colwise(my.fun, "dcvt"))
Run Code Online (Sandbox Code Playgroud)

我也尝试使用reshape2包转换为广泛,然后运行for循环,但当然,这需要永远.

有没有办法可以快速完成这项工作?我应该zoo使用宽物体diff吗?如果可以的话,我想避免通过时间序列.谢谢!

koh*_*ske 5

在ddply中使用tranform有时可以帮助我们:

ddply(temp, .(tic), transform, dcvt=c(0, diff(dcvt)>0))
Run Code Online (Sandbox Code Playgroud)