R在数据表中循环添加列

罗莎

我有一个像这样的数据表:

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)]
}

任何帮助,将不胜感激!

伦特罗普

那就是lapply可以用的。

degree <- c(100, 102, 105, 108, 112)  
myfun <- function(x,y) sum(y <= x)
DT1 <- DT[, lapply(degree, myfun, value), by = .(ID, year)]
setnames(DT1, c("ID", "year", as.character(degree)))

结果:

> DT1
   ID year 100 102 105 108 112
1:  1 2003   0   2   3   3   3
2:  1 2004   0   0   2   3   3
3:  2 2005   0   0   0   2   3
4:  2 2006   0   0   0   0   3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在数据表中为r中的每一行添加循环?

来自分类Dev

使用for循环在数据表中创建多个列

来自分类Dev

在数据表中添加边际?

来自分类Dev

在数据表中添加行

来自分类Dev

在数据表中添加HTML标记添加行

来自分类Dev

在数据表中添加HTML标记添加行

来自分类Dev

在数据表中查找数据并将其添加到新列

来自分类Dev

在数据表中,比较行并在 R 中进行无循环计算

来自分类Dev

在数据表的开头添加一列

来自分类Dev

在数据表中的特定列下添加一行

来自分类Dev

如何使用对象的大小在数据表中动态添加列

来自分类Dev

如何在数据表中添加按钮,以便可以编辑特定的列

来自分类Dev

在数据表中添加具有可变列数的行

来自分类Dev

在数据表中添加图像标签

来自分类Dev

在数据表中添加删除和编辑按钮

来自分类Dev

如何在数据表中添加拖放支持?

来自分类Dev

在数据表中添加字段的总和

来自分类Dev

在数据表中添加标签

来自分类Dev

无法使用 jquery 数据表在数据表中添加行

来自分类Dev

在数据表按钮中从导出中排除列

来自分类Dev

在数据表的列中重复行

来自分类Dev

在数据表中创建序号列索引

来自分类Dev

R 数据表 - 将分组列添加到选定数据中

来自分类Dev

在数据表中逐个使用by by

来自分类Dev

在数据表中定义列名

来自分类Dev

在数据表中查找重叠

来自分类Dev

在数据表中添加新行时,将逗号分隔值添加到数据表列的更好方法

来自分类Dev

循环遍历数据表中特定列的值

来自分类Dev

添加一个按钮以在数据表中显示其他数据