如何使用r自动化多个文件的子集

时间:2014-12-12 04:59:34

标签: r csv subset

大家好我是R的新手,如果我一次处理一个文件,我很乐意创建子集....但是我无法自动化多个文件...所以在我的情况下,我想要自动化对给定文件夹的多个子文件夹中存在的多个csv文件进行子集化的过程...我想创建多个子集文件,其中包括每个文件的100行,并将它们写入新文件和子集化文件的名称应该与他们被子集化的文件相同...任何帮助表示感谢...谢谢!!!

1 个答案:

答案 0 :(得分:1)

我在我的文件夹subfolders中创建了几个Temp。如果工作目录是Temp。假设每个数据集中的行数为>= 100

files <- list.files(recursive=TRUE, full.names=TRUE)
files
#[1] "./Temp1/file1.csv"   "./Temp2/file2_2.csv" "./Temp2/file2.csv" 

lst1 <- lapply(files, function(x) read.csv(x, sep='')[1:100,])
Pref <- sub("/[^/]+$", '', files)

然后将subset文件与old文件一起写入相应的文件夹。

invisible(lapply(seq_along(lst1), function(i) 
            write.csv(lst1[[i]],paste(Pref[i],paste0('Subset',
           basename(files[i])), sep="/"), quote=FALSE, row.names=FALSE)))

list.files(recursive=TRUE, full.names=TRUE)
#[1] "./Temp1/file1.csv"         "./Temp1/Subsetfile1.csv"  
#[3] "./Temp2/file2_2.csv"       "./Temp2/file2.csv"        
#[5] "./Temp2/Subsetfile2_2.csv" "./Temp2/Subsetfile2.csv"