我有许多按天分开的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")
答案 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]))