【发布时间】:2015-02-03 22:00:31
【问题描述】:
我有一个这样的数据表:
DT <- data.table(ID=rep(c(1:2),each=6), year=rep(c(2003:2006),each=3), month=rep(c(5:8),3), day=rep(c(11:14),3),value=c(101:112))
我想添加具有条件的列:
1、添加5列名称:V100、V102、V105、V108、V112
2、在每一列中,按ID和年份分组,对小于列名中的值的值求和,例如:对于V112列,对小于112的值求和
所以结果会是这样的:
DT1 <- data.table(ID=rep(c(1:2),each=2), year=c(2003:2006), "100"=rep(0,4), "102"=c(2,0,0,0),"105"=c(3,2,0,0),"108"=c(3,3,2,0),"112"=rep(3,4))
我尝试编写代码但无法弄清楚:
degree <- c(100,102,105,108,112)
for (d in degree)
{
f_year <- function(d) {sum(DT$value <= d)}
DT <- DT[,d:=f_year(),by=list(ID,year)]
}
任何帮助将不胜感激!
【问题讨论】:
标签: r for-loop data.table