问题描述
DT <- data.table (A=c(1,1,2,3,4,5),B=c(200,210,300,420,289,365,587,250,110,500,800),C=c(0.6,0.35,0.6,0.85,0.22,0.36,0.39,0.31,0.33,0.58,0.66))
DT_Split <- split(DT,DT$A)
Table1<- DT_Split$`1`
Table2<- DT_Split$`2`
Table3<- DT_Split$`3`
Table4<- DT_Split$`4`
Table5<- DT_Split$`5`
因此,我有5个来自DT的表。 我想通过使用函数在每张表中添加一列GH。 我可以使用R函数吗? 因此,如果我有10个带有另一个数据框的表,那么我可以使用此功能而无需为每个表手动添加。
预先感谢, 米拉德(Milad)
解决方法
如果要对数据帧列表进行操作,可以使用lapply
。例如,如果您想在列表的每个元素中添加一个新列(名为new_column
),并添加一个值(new_value
)
lapply(DT_Split,function(x) {
x$new_column <- 'new_value'
x
}) -> DT_new
通过这种方式,您可以对列表中的每个数据框执行多项操作,而无需手动对每个数据框进行操作。
对于OP提到的特定功能,我们可以做:
lapply(DT_Split,function(x) {
x[,B := cumsum(c(TRUE,diff(A) < 0))]
x
}) -> DT_new
或者由于这是一个分组操作,所以我们也可以先按组执行然后拆分。
DT[,diff(A) < 0)),A]
DT_Split <- split(DT,DT$A)