嗨,我在数据中有一个数据集。表格格式。我们将此dtA称为:
Date Company Data
200012 compA 3
200012 compB 4
200012 compC 7
200101 compA 1
200101 compB 2
200101 compC 3
200102 compA 2
200102 compB 4
200102 compC 1
我想为每个日期,每个公司做,我想在两者之间做减法。
因此,最终结果将是:
Date Company Data
200102 compA 1
200102 compB 2
200102 compC -2
200101 compA -2
200101 compB -2
200101 compC -4
为此,我编写了一个冗长而庞大的代码,我是否可以在数据中使用lappy函数。桌子
我似乎不明白lapply是如何用于内部数据的。桌子当Lappy中没有迭代器时,我无法循环遍历日期。。。
这是我的代码:
date=as.data.table(c("200012","200101", "200102"))
comp=as.data.table(c("compA","compB","compC"))
result=NA
date=date[-order(date)] #so it go decenting order
for (i in 1:(nrow(date)-1)){
d1=date[i]
d2=date[i+1]
dtA1=dtA[Date==d1][order(Company)]
dtA2=dtA[Date==d2][order(Company)]
ans.temp=merge(dtA1,dtA2, on=c("Date","Company"))
ans.temp=ans.temp[,Data := Data.x - Data.y, by="Company"]
ans.temp=ans.temp[,-c(3,4,5)]
if (is.NA(result)[1]){
result=ans.temp
} else{
result=rbind(result, ans.temp)
}
}