【问题标题】:R 1000+ .CSV files merging and frequency analysisR 1000+ .CSV 文件合并和频率分析
【发布时间】:2017-01-31 11:45:34
【问题描述】:

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

我需要的是;每 10 个文件放入一个矩阵或合并到一个文件中(参见下面的文件示例)。这些列是FrequencyChannel A(以及后来的Channel B)。只需 FAB,每个文件的 F 值都是相同的(因此我是思考matrix)。最后我会得到标题

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

等...到 10。

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

    +------------+-------------+
    |  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 样式的错误!

【问题讨论】:

  • 我忘了在读取的文件之后包括命名write.csv 文件。例如:filename~testJ~1...~testJ~10write.csv 文件名 = 文件名~testJ.csv。好尴尬!
  • 不要使用 cmets 来修改你的问题。使用[edit] 链接。这就是它的用途,使用它可以提高问题的质量。你说“你回来了”。这是否意味着在您期望答案查找的其他未链接问题中有更多上下文?你说你有你一直在调试的代码,但你没有提供代码。
  • 谢谢@42-。我不得不在小步舞曲之后从移动设备上发表评论,编辑无法正常工作。作为新用户,我回来了更多,上次发现线程和答案非常有用。我没有插入代码,而是希望以更好的结构示例重新开始。要遵循的代码。

标签: r csv data-analysis


【解决方案1】:

如果没有更好的示例来说明每个文件的外观、您希望输出的内容以及一些示例代码,很难回答。

文件是否足够小,可以一次加载全部 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]

【讨论】:

  • lapply 将简化 for 循环,并且可以与 mclapply 并行完成,但我认为这会更清楚它实际上在做什么。
猜你喜欢
  • 2016-12-09
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 2011-05-17
相关资源
最近更新 更多