有没有一种简单的方法可以使用循环来更新一系列数据帧?

时间:2020-05-27 23:48:39

标签: r loops dataframe

我正在寻找一种方法来遍历R中的一系列数据帧,以便对其进行重组,以准备通过多个线性回归模型推动它们。这是基本结构。

假设您有3个数据帧:

StateList <- c(AL, AR, AZ)

每个状态代表一个不同的数据帧(具有不同记录计数的同一列)。我想将所有3个数据帧从其RAW形式的列重组为ETL版本,在该版本中,我仅以不同于RAW格式的顺序选择某些列。我可以通过运行以下命令轻松完成此操作:

AL <- AL[var5,var3,var2]
AR <- AR[var5,var3,var2]
AZ <- AZ[var5,var3,var2]

是否有任何简便的方法可以使用上面的StateList中的列表遍历所有数据帧(具有不同的名称),并将所有2个数据帧更新为ETL格式?

我尝试执行以下操作,但似乎不起作用:

VariableList <- c(var5,var3,var2)
for (df in StateList) {
   df[VariableList]}

2 个答案:

答案 0 :(得分:1)

像这样吗?

for(let i = 1; i <= 100; i++){
    if (i % 5 === 0 && i % 3 === 0) {
        console.log("fizzbuzz");
    } else if(i % 3 ===0) {
        console.log("fizz");
    } else if ( i % 5 === 0 ) {
        console.log("buzz");
    }
    console.log(i);
}

然后,您可以使用library(dplyr) data(mtcars) df1 <- mtcars %>% filter(cyl == 4) df2 <- mtcars %>% filter(cyl == 6) df3 <- mtcars %>% filter(cyl == 8) df_names <- c("df1", "df2", "df3") df_list <- lapply(df_names, get) names(df_list) <- df_names lapply函数将所需的任何功能应用于每个列表元素(即数据框)。

答案 1 :(得分:0)

将数据框添加到列表中,您可以使用lapply对其进行迭代,以特定顺序排列数据,并执行您想对它执行的任何任务。

StateList <- list(AL, AR, AZ)
VariableList <- c("var5","var3","var2")

result <- lapply(StateList, function(x) {
              new_data <- new_data <- data[, VariableList]
              #Add code to perform on each dataframe
              #....
})