如何自动化文件路径以从多个 csv 文件的列中获取平均值?
Posted
技术标签:
【中文标题】如何自动化文件路径以从多个 csv 文件的列中获取平均值?【英文标题】:How to automate file paths to take mean from a column from multiple csv files? 【发布时间】:2021-07-20 00:10:57 【问题描述】:我有 600 个文件夹,每个文件夹包含两个 .csv
文件,我希望从 LEFT_CHANNEL
中获取平均值并存储在 data.frame
中
到目前为止,这是我的代码:
H_results <- read.csv("E:/Audiomoth Files/Winter/Urban/Nisha/_1/H_results.csv")
mean_H <- mean(H_results$LEFT_CHANNEL)
ndsi_results <- read.csv("E:/Audiomoth Files/Winter/Urban/Nisha/_1/ndsi_results.csv")
mean_ndsi <- mean(ndsi_results$LEFT_CHANNEL)
data1 <- data.frame(H = mean_H,
ndsi = mean_ndsi)
H_results <- read.csv("E:/Audiomoth Files/Winter/Urban/Nisha/_2/H_results.csv")
mean_H <- mean(H_results$LEFT_CHANNEL)
ndsi_results <- read.csv("E:/Audiomoth Files/Winter/Urban/Nisha/_2/ndsi_results.csv")
mean_ndsi <- mean(ndsi_results$LEFT_CHANNEL)
new_row <- c(mean_H, mean_ndsi)
data1 <- rbind(data1, new_row)
这是可行的,但我想找到一种自动化文件路径的方法,这样我就不必每次都复制和粘贴并将文件夹更改为_1, _2, _3
。
我对 R 完全陌生,并尝试学习,因此非常感谢任何帮助!
谢谢!
【问题讨论】:
【参考方案1】:也许像下面这样的东西可以解决这个问题。未经测试,因为没有数据。
H_files <- "E:/Audiomoth Files/Winter/Urban/Nisha/_%s/H_results.csv"
ndsi_files <- "E:/Audiomoth Files/Winter/Urban/Nisha/_%s/ndsi_results.csv"
col_name <- "LEFT_CHANNEL"
file_nums <- 1:600
data1 <- lapply(file_nums, function(i)
fl <- sprintf(H_files, i)
df <- read.csv(fl)
mean_H <- mean(df[[col_name]])
fl <- sprintf(ndsi_files, i)
df <- read.csv(fl)
mean_ndsi <- mean(df[[col_name]])
c(mean_H = mean_H, mean_ndsi = mean_ndsi)
)
data1 <- do.call(rbind.data.frame, data1)
【讨论】:
以上是关于如何自动化文件路径以从多个 csv 文件的列中获取平均值?的主要内容,如果未能解决你的问题,请参考以下文章