Есть ли простой способ обновить серию фреймов данных с помощью al oop? - PullRequest
0 голосов
/ 28 мая 2020

Я ищу способ прогнать серию фреймов данных в R, чтобы реструктурировать их для подготовки к проталкиванию их через несколько моделей линейной регрессии. Вот базовая структура c.

Допустим, у вас есть 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]

Есть ли какой-нибудь простой способ, которым я могу oop пройти через все фреймы данных (которые имеют разные имена), используя список, как в StateList сверху и обновить все 2 кадра данных в формате ETL?

Я попытался сделать следующее, но, похоже, это не сработало:

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

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Что-то вроде этого?

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 или map, чтобы применить любую функцию, которая вам требуется, к каждому из элементов списка (которые являются вашими фреймами данных).

0 голосов
/ 28 мая 2020

Добавьте фрейм данных в список, вы можете перебирать их, используя lapply, упорядочивать данные в определенном c порядке и выполнять любые задачи, которые вы хотите выполнить с ним.

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
              #....
})
...