如何用R批量处理CSV文件描述性统计并导出表格
批量处理CSV文件计算统计量的问题
我有一个存放CSV文件的文件夹,这些文件是经过个性化最小值和最大值过滤的选通数据,每文件包含两列(二面角 vs 弯曲角)。我需要为每个文件的每列计算均值、中位数、标准差(sd)、偏度(skewness)和峰度(kurtosis),最终把这些统计量整理成表格,每行对应一个文件。
我不熟悉适合这个任务的R包,自己写了简单代码,单文件处理可行,但现在有200多个文件,而且文件会更新需要反复运行程序。下面是我写的代码:
module load ccs/container/R/4.1.0 R library(moments) files <- list.files("/mnt/gpfs2_4m/scratch/username/fs_scripts/foldedstart_*", pattern="*.csv", recursive=TRUE, full.names=TRUE) cat("filename","\t","dihedral mean","\t","bend mean","\t","dihedral median","\t","bend median","\t","dh sd","\t","bd sd","\t","dh skew","\t","bd skew","\t","dh kurt","\t","bd kurt","\n") for (currentFile in files) { df <- read.table(fileName[i], header=TRUE) z1 <- mean(df$V1) z2 <- median(df$V1) z3 <- sd(df$V1) z4 <- skewness(df$V1) z5 <- kurtosis(df$V1) z7 <- mean(df$V2) z8 <- median(df$V2) z9 <- sd(df$V2) z10 <- skewness(df$V2) z11 <- kurtosis(df$V2) cat(filename,"\t",z1,"\t",z7,"\t",z2,"\t",z8,"\t",z3,"\t",z9,"\t",z4,"\t",z10,"\t",z5,"\t",z11,"\n") write.table(newdata, file=statsFileName[i])) }
目前的问题:第一条cat语句用来生成表头,但循环里的cat无法正常输出;write.table是参考的代码,不确定是否适用以及怎么正确使用。我不太熟悉R,找的示例也适配不了我的需求,恳请帮忙。
编辑补充
我想获取可视化图表中每个主要密度区域的中位数(中心值)作为上下文参考,同时附上以下相关截图:
- 绘图示例
- 数据示例
- 单文件运行无输出的情况
- 文件夹内文件示例截图(多张)
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

