R 1000+ .CSV文件合并和频率分析

时间:2016-09-22 18:51:32

标签: r csv data-analysis

所以我回来时用更加冒险的方法来处理我使用R操作的数千个.CSV文件。我可以导入,合并每十个文件,重命名columb标题,保存新的.CSV等,但结果仍然是分析操作很麻烦。

我需要的是什么;每10个文件放入一个矩阵或合并为一个文件(参见下面的文件示例)。列是频率频道A (以及后来的频道B )。只需 F A B F 值对于每个文件都是相同的(因此我是思考matrix)。最后我会以标题

结束
| *F* | *A1* | *B1* | *A2* | *B2* | *A3* | *B3* | 

等......到10。

matrix / bind_col循环内部,是否可以在wrie.csv之前对值 A1-10 执行某些数学运算?每个频率平均值平均值的几个新列。我也需要其他人,但我会自己解决。

    +------------+-------------+
    |  Frequency |  Channel A  |
    |    (MHz)   |    (dBV)    |
    +------------+-------------+
       0.00000000,-27.85117000
       0.00007629,-28.93283000
       0.00015259,-32.89576000
       0.00022888,-43.54568000
    ---
    Continued...
    ---
      19.99977312,-60.59710000
      19.99984941,-48.58142000
      19.99992571,-43.29094000

谢谢你的时间,我知道我花了太多的调试,现在我正在寻找一种更优雅的方法。 PS:我的格式怎么样?表和.CSV风格错误!

1 个答案:

答案 0 :(得分:0)

如果没有一个更好的示例来回答每个文件的样子,以及您希望输出的内容,以及一些示例代码。

文件是否足够小,您可以一次加载所有1000?

如果是我的话,我会从下面开始。

library(data.table)

filenames <- list.files(pattern = ".csv$")

list_data <- vector(mode = "list", length = length(filenames))

i <- 1
for (file in filenames){
  list_data[[i]] <- fread(file)
  i <- i + 1
}

dat <- rbindlist(list_data, use.names = TRUE, fill = TRUE)

之后,您可以使用所有有用的data.table功能。

dat[, .(meanA = mean(A), stdevA = sd(A)), by = Frequency]