我正在努力学习R,而我在完成当前的任务时遇到了困难,我认为有人可能会有一些见解或建议来帮助我从逻辑上思考。
我有一个包含多个CSV文件的目录,每个文件代表一个单独的生态测量日。每天(文件)测量/变量是相同的,因此每个CSV具有相同的标题,但每个变量包含数百个独特的观察结果。
我试图写一个小脚本:
读取目录中的文件列表,逐个加载每个文件,同时取一个特定列的平均值,然后将该均值和关联日期存储在新数据框中
然后我想绘制日期和平均值,看看平均值是如何随时间变化的。
有关如何最好地完成此任务的任何建议?
这是我的工作尝试:
dir <- getwd()
file.ls <- list.files(dir, full.names = T)
count <- length(file.ls)
all.means <- data.frame()
data <- data.frame()
for(i in 1:count){
data <- read.csv(file.ls[i])
date <- data[2,1]
means <- mean(data$total_con)
all.means[i] <- cbind(all.means, date, means)
}
plot(all.means$date, all.means$means)
答案 0 :(得分:0)
你问题的缺失成分是“每个文件如何告诉你它的日期?”我假设你有一些命名约定,如mydata_yyyy-mm-dd.csv
以下代码可以适用于:
library(plyr) # provides ldply
data.file.names <- dir(pattern="^mydata") # reads just the data files
X <- ldply(data.file.names, function(fn) {
dat <- read.csv(fn) # read the file
this.date <- strptime(substring(fn, 8, 17), "%Y-%m-%d") # parse the date from the file name
this.mean <- mean(dat[,n.col.of.interest]) # calculate the stat of interest
return(data.frame(date.of.experiment=this.date, measurement=this.mean)) # return one row
})
然后您可以绘制或以其他方式使用数据。