I am trying to improve my code and avoid repeating lines to import multiple csvs with same name structure:
iOS_Weekly_Active_Users_20210301 <- read.csv("iOS_Weekly_Active_Users_20210301.csv", header = T)
iOS_Weekly_Active_Users_20210301$WeekDate <- "2021-03-01"
iOS_Weekly_Active_Users_20210308 <- read.csv("iOS_Weekly_Active_Users_20210308.csv", header = T)
iOS_Weekly_Active_Users_20210308$WeekDate <- "2021-03-08"
iOS_Weekly_Active_Users_20210315 <- read.csv("iOS_Weekly_Active_Users_20210315.csv", header = T)
iOS_Weekly_Active_Users_20210315$WeekDate <- "2021-03-15"
iOS_Weekly_Active_Users_20210322 <- read.csv("iOS_Weekly_Active_Users_20210322.csv", header = T)
iOS_Weekly_Active_Users_20210322$WeekDate <- "2021-03-22"
I managed to implement it to read the csv but I don't know how to as well insert the part where I create a new column WeekDate
to the data frame and where I give it the date value.
week_date_list <- c("20210301", "20210308", "20210315", "20210322" )
for(week_date in week_date_list){
assign(paste0("iOS_Weekly_Active_Users_", week_date), read.csv(paste0("iOS_Weekly_Active_Users_", week_date, ".csv"), header = T))
}
It is not recommended to create multiple objects in the global env. This could be easily done by storing in a list
(used R 4.1.0
for lambda (\(week_date)
) or use function(week_date)
lst1 <- lapply(week_date_list, \(week_date) {
tmp <- read.csv(paste0("iOS_Weekly_Active_Users_",
week_date, ".csv"), header = TRUE)
tmp$WeekDate <- as.Date(week_date, format = "%Y%m%d")
tmp
})
In the OP's for
loop
for(week_date in week_date_list){
tmp <- read.csv(paste0("iOS_Weekly_Active_Users_", week_date, ".csv"),
header = TRUE)
tmp$WeekDate <- as.Date(week_date, format = "%Y%m%d")
assign(paste0("iOS_Weekly_Active_Users_", week_date), tmp)
}