是否有R函数在不同的数据表中创建新列?

是否有R函数在不同的数据表中创建新列?,r,function,R,Function,我有一个数据帧,DT。它由一个变量拆分为不同的表 DT <- data.table (A=c(1,1,1,2,2,3,3,4,4,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。它由一个变量拆分为不同的表

DT <- data.table (A=c(1,1,1,2,2,3,3,4,4,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`

DT如果要对数据帧列表进行操作,可以使用
lappy
。例如,如果要在列表的每个元素中添加一个新列(名为
new\u column
),并使用一个值(
new\u value
),则可以执行以下操作

lapply(DT_Split, function(x) {
  x$new_column <- 'new_value'
  x
}) -> DT_new
lappy(DT_分割,函数(x){
x$new\u列DT\u new
通过这种方式,您可以在列表中的每个数据帧上执行多项操作,而无需手动执行


对于OP提到的特定功能,我们可以:

lapply(DT_Split, function(x) {
  x[, B := cumsum(c(TRUE, diff(A) < 0))]
  x
}) -> DT_new
lappy(DT_分割,函数(x){
x[,B:=cumsum(c(真,差(A)<0))]
x
})->DT_新
或者,由于这是一个分组操作,我们也可以先按组执行,然后再拆分

DT[, B := cumsum(c(TRUE, diff(A) < 0)), A]
DT_Split <- split(DT, DT$A)
DT[,B:=cumsum(c(真,差(A)<0)),A]

DT_Split如果您想对数据帧列表进行操作,可以使用
lappy
。例如,如果您想在列表的每个元素中添加一个新列(名为
new_column
),并使用一个值(
new_value
),您可以这样做

lapply(DT_Split, function(x) {
  x$new_column <- 'new_value'
  x
}) -> DT_new
lappy(DT_分割,函数(x){
x$new\u列DT\u new
通过这种方式,您可以在列表中的每个数据帧上执行多项操作,而无需手动执行


对于OP提到的特定功能,我们可以:

lapply(DT_Split, function(x) {
  x[, B := cumsum(c(TRUE, diff(A) < 0))]
  x
}) -> DT_new
lappy(DT_分割,函数(x){
x[,B:=cumsum(c(真,差(A)<0))]
x
})->DT_新
或者,由于这是一个分组操作,我们也可以先按组执行,然后再拆分

DT[, B := cumsum(c(TRUE, diff(A) < 0)), A]
DT_Split <- split(DT, DT$A)
DT[,B:=cumsum(c(真,差(A)<0)),A]

DT_Split再次感谢您提供的有用答案。如果我想用
DT[,B:=cumsum(c(TRUE,diff(a)<0))]
创建一个新列。我如何将它添加到这个函数中?感谢更新了答案。谢谢,太好了!我非常感谢!再次感谢您提供的有用答案。如果我想用
DT[,B:=cumsum(c(TRUE,diff)创建一个新列(A) <0))]
。如何将其添加到此函数中?谢谢您给出了答案。谢谢,太好了!非常感谢!