【问题标题】:How to automate file paths to take mean from a column from multiple csv files?如何自动化文件路径以从多个 csv 文件的列中获取平均值?
【发布时间】: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 完全陌生,并尝试学习,因此非常感谢任何帮助!

谢谢!

【问题讨论】:

    标签: r dataframe csv mean


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 2014-11-13
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多