R函数自动添加日期列,然后多次导出csv

时间:2019-06-12 21:29:14

标签: r loops

我有许多按天分开的csv文件。我编写了一个代码来手动导入每个代码,并添加一个日期列,然后再次将其导出。

但是,这需要我输入数百个文件名才能在许多行上更改相同的代码。我想创建一个循环并根据名称添加日期列的函数,然后导出一个新的csv。

通过执行此操作,我基本上必须将每个文件输入此公式才能实现所需的功能。有没有一种方法可以不需要所有的体力劳动。

Oct0418 <- read.csv("10.04.18 (x).csv")
Oct0418$Date <- as.Date("2018/10/04")
write.csv(Oct0418, "10.04.18.csv")

Oct1118 <- read.csv("10.11.18 (x).csv")
Oct1118$Date <- as.Date("2018/10/11")
write.csv(Oct1118, "10.11.18.csv")

1 个答案:

答案 0 :(得分:2)

#list all the csv files in the desired folder
temp    <- list.files(pattern="*.csv")

#read them into r and store them in a list
myfiles <- lapply(temp, read.csv)

#use substr to get the part of their name that is going to be used as a date
#and bind that as a new column to the existing data in `myfiles` list
myfiles <- lapply(1:length(myfiles), 
                    function(i) cbind("Date"=as.Date(substr(temp[i], 1, 8), 
                                                      format = "%m.%d.%y"), 
                                       myfiles[[i]]))

#write these modified datasets back to csv files
           sapply(1:length(myfiles), 
                    function(i) write.csv(myfiles[[i]], temp[i]))