2014-01-16 4 views
1

R에 병합하고 병합해야하는 Excel 파일이 약 100 개 있습니다. 모든 Excel 파일에는 4 개의 열이 있으며 각 열은 가져와야합니다. 파일은 다음과 같습니다.파일 이름이 여러 개인 Excel 파일 가져 오기 R

1  127   122 
1  87  
2  107  
1  136 k  
1  210  

또한 각 행에 대해 다섯 번째 열로 filename을 추가해야합니다. 모든 Excel 파일은 같은 폴더에 있습니다.

지금까지 나는 다음과 같은 시도 :

library(xlsx) 
setwd("c:/temp/") 
filenames <- list.files(pattern=".xls") 
do.call("rbind", lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, colIndex=(1:4), header=FALSE, FILENAMEVAR=x))) 

내가 오류를 다음 얻을 : rbind의 오류 (deparse.level, ...) : 인수의 열 번호는 내가 가진

일치하지 않습니다 첫 번째와 두 번째 열로 만 제한하면 함수가 완벽하게 작동하므로 세 번째와 네 번째 열의 빈 셀에 문제가 있습니다.

+1

각 파일의 열 수가 동일하지 않습니까? http://r.789695.n4.nabble.com/Flexible-rbind-td3383857.html – Freak

+0

예, 일부 파일에는 세 번째 열이 비어 있습니다. – user3190577

+0

내가 당신과 공유 한 링크를 보았습니까? – Freak

답변

5

나 자신을 알아 냈어. 열쇠는 rbind 대신 rbind.fill을 사용하는 것이 었습니다.

library(plyr) 
df.list <- lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, 
        colIndex=1:4,as.data.frame=TRUE, header=FALSE, FILENAMEVAR=x)) 
final.df <- rbind.fill(df.list) 
+0

당신이 스스로 알아 낸 후에 답변을 게시 해 주셔서 감사합니다; 나는 그것이 다른 사람들에게 유용 할 수 있다고 확신하며 모든 사람들이 그렇게 할 수는 없다. 플라이어는 위대하지 않니? – prooffreader