2013-10-03 2 views
0

에 병합합니다. 단일 데이터 프레임으로 병합하려는 수백 개의 .csv 파일이있는 폴더가 있습니다.일치하지 않는 헤더가있는 CSV 파일을 R

이 코드는 비교적 잘 작동하지만 머리글이 일치하는 파일에만 사용되었습니다.

df <- do.call(rbind, lapply(filenames , read.csv)) 

두 부분 질문.

1) 나는 데이터의 각 행에 대해 .csv 파일 이름을 포함하는 추가 열을 포함하려면이 do.call 코드를 추가하고 싶습니다

2) 또한 병합 할 수 있도록하고 싶습니다 일치하지 않는 헤더가있는 .csv 파일 각 파일에는 네 개의 열 (이름이 다름)이 있지만 데이터 유형이 일치합니다. 그래서 열 머리글에 관계없이 파일을 강제로 바인딩하려고합니다.

이 포스팅은 아니지만 비 mathcing의 헤더 파일을 병합 도움이되었습니다 : 나는 또한이 코드를 사용했습니다

Merge multiple CSV files and remove duplicates in R

을; 다시에만 일치하는 헤더 파일 :

for (file in filenames){ 
    # if the merged dataset doesn't exist, create it 
    if (!exists("dataset")){ 
    dataset <- read.csv(file, header=TRUE, sep="\t") 
    } 
    # if the merged dataset does exist, append to it 
    if (exists("dataset")){ 
    temp_dataset <-read.csv(file, header=TRUE, sep="\t") 
    dataset<-rbind(dataset, temp_dataset) 
    rm(temp_dataset) 
    } 
    } 
+0

? 그들을 삭제합니까, 모두 보관합니까? 나는 후자입니다. 새 열이없는 파일은 어떻게됩니까? –

+0

@RicardoSaporta - 질문을 약간 편집했습니다. 각 파일에는 4 개의 열 (이름이 다름)이 있지만 데이터 유형이 일치합니다. 그래서 열 머리글에 관계없이 파일을 강제로 바인딩하려고합니다. – Flammulation

+0

은 한 파일에서 다음 파일까지 항상 같은 순서로 열입니까? 그렇다면 그냥'header = FALSE'로 읽어 들이고 –

답변

0

무엇에 대해 :

여기에 매우 불분명하다 당신이 일치하지 않는 열이 발생 싶은 것이 무엇
df <- do.call(rbind, lapply(filenames , 
         function(x) data.frame(filname = x, read.csv(x))) 
+0

이것은 파일 이름이있는 열을 추가 할 때 유용합니다. 일치하지 않는 열 이름으로 파일을 병합하는 기능을 통합하는 방법에 대해 알고 싶습니다. – Flammulation

+1

기존 이름을 덮어 쓰거나 이름 일치 및 일치하지 않는 삭제에 대한 규칙을 제공해야합니다. 그 질문은 현재 너무 모호합니다. 질문을 편집하여 테스트 사례를 제공하십시오. –

+1

@RicardoSaporta에서'header = FALSE' 덧셈을 사용하여 @DWin의 파일 이름을 추가하는 코드를 포함 시켰고이 코드로 끝났습니다 :'dataset <- ldply (filenames, function (x) data.frame (filname = x ,'read.csv (x, header = FALSE)))' – Flammulation

관련 문제