所以我回来时用更加冒险的方法来处理我使用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风格错误!
答案 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]