我有不同的数据框“dsub_i_j”
i= 316, 325, 1101, 1349, 1544, ...
j= 1,2,3,4,5,6,7,8
dsub_101_1
dsub_101_2
.
.
dsub_101_8
dsub_316_1
dsub_316_2
.
.
.
我想在每个data_frame中添加相同的变量:
我的意思是为每个j做这个:
# j= 101
dsub_101_1$orden_grupo=seq(1, nrow(dsub_101_1), by = 1)
dsub_101_2$orden_grupo=seq(1, nrow(dsub_101_2), by = 1)
dsub_101_3$orden_grupo=seq(1, nrow(dsub_101_3), by = 1)
dsub_101_4$orden_grupo=seq(1, nrow(dsub_101_4), by = 1)
dsub_101_5$orden_grupo=seq(1, nrow(dsub_101_5), by = 1)
dsub_101_6$orden_grupo=seq(1, nrow(dsub_101_6), by = 1)
dsub_101_7$orden_grupo=seq(1, nrow(dsub_101_7), by = 1)
dsub_101_8$orden_grupo=seq(1, nrow(dsub_101_8), by = 1)
然后将每个组粘贴在一起。
dsub_101=rbind(dsub_101_1,dsub_101_2,dsub_101_3,dsub_101_4,dsub_101_5,
dsub_101_6,dsub_101_7,dsub_101_8)
dsub_101$orden=seq(1, nrow(dsub_101), by = 1)
并在setwd中保存每一个。
我试过这个但是没有用。 :(
grupo_fict_groups = c(1,2,3,4,5,6,7,8)
cod_jer_grups= c(101, 316, 325, 1349, 1544,...)
for(i in cod_jer_groups ){
for(j in grupo_fict_groups){
dsub_i_j$orden_grupo=seq(1, nrow(dsub_i_j), by = 1)
}}
任何建议?
由于
答案 0 :(得分:0)
创建将数据框绑定在一起并添加id列的函数可以帮助迭代。
rbind.id <- function(..., id.col="orden_grupo") {
args <- list(...)
dfs <- if(length(args) == 1 && is.list(args[[1]])) args[[1]] else args
df2 <- do.call("rbind", dfs)
df2[,id.col] <- unlist(lapply(dfs, function(x) 1:nrow(x)))
return(df2)
}
新的rbind.id
函数执行常规rbind的功能,但也为每个df添加了一个id。接下来,我们可以在lapply循环中包装此函数,以循环多个数据框组。
multi.bind <- function(patterns) {
lapply(patterns, function(p) rbind.id(mget(ls(pattern=p, envir=.GlobalEnv),envir=.GlobalEnv)))
}
这个multi.bind函数接受一个模式向量作为输入。这些是您示例中的dsub_i
标签。可能的循环可能是:
i <- c(316, 325, 1101, 1349, 1544)
allgrps <- paste0("dsub_", i)
multi.bind(patterns=allgrps)