【发布时间】:2018-07-10 22:34:50
【问题描述】:
所以我有大约 300 个大型 .csv 文件。我需要获取第 1 列和第 2 列,然后将每个文件的第 3 列和第 20 列相加。最快的方法是什么? 谢谢
【问题讨论】:
-
根据描述不清楚。你说你想得到第 1 列和第 2 列并且总和列休息?请展示一个可重复的小示例和预期输出\
-
请阅读how to ask good questions。其他好的参考包括reproducible examples 和minimal examples。此外,这些中的每一个都已经在 SO 上回答了许多问题:(1)将许多大型 CSV 文件读入一个列表; (2) 对特定列求和。
-
除非它是一个非常极端的情况
sum或colSums应该适用于第一部分。要读取许多文件,我建议将它们放在同一个文件夹或同一个文件夹中的文件夹中,然后使用dir或System获取它们的名称等 -
试试这个:
lst<-lapply(filenames,read.csv)然后lst<-lapply(lst, function(x) cbind(x[1:2],s=rowSums(x[3:20]))),这样可以吗? -
是的,抱歉,我不够清楚。以前我是这样做的:
d001 <- read.csv(file="d001.csv", header=TRUE, sep=",") transmute(d003,i, j , Flux= h01 + h02 + h03 + h04 + h05 + h06 + h07 + h08 + h09 + h10 + h11 + h12 + h13 + h14 + h15 + h16 + h11 + h22 + h23 + h24)所以我可以得到一个包含 i、j 和 Flux 列的新数据集,而 Flux 是其余列的总和。我需要对所有 300 个文件执行此操作,然后加入它们,所以我试图找到一个循环但尚未成功;文件很大 (400 mb)