2012-09-27 5 views
0

40 개의 CSV 파일이 있습니다. 각각에는 이름의 열이 있습니다. 각 이름 열에서 동일한 이름을 반복 할 수 있습니다 (총 이름 열은 평균 20,000 행이고 ​​약 절반은 고유합니다). 두 개 이상의 파일에 나타나는 이름 목록을 만들려고합니다 (어느 파일이 표시되는지 알려줍니다). 하나 이상의 파일에 동일한 이름이 표시되면 각각의 이름을 알고 싶습니다.고유 한 문자열을 추출하십시오.

그래서, 작은 규모 : 같은

File1 
    Name 
    John 
    Peter 
    Abby 
    John 


    File2 
    Mike 
    Tim 
    John 
    Anothername 


    File3 
    Me 
    Mike 
    Adam 
    Eve 

내 원하는 출력이 될 것이다 뭔가 :

data.frame 
Names   File 
John   1 
John   2 
Mike   2 
Mike   3 

답변

1

다음은 목록에 모든 CSV를 넣으면 요 소요될 수있는 접근 방식 :

#generate a fake data set easy to work with 
LIST <- lapply(rpois(10, 10), function(i)data.frame(id=1:i, state=sample(state.name, i))) 

#add the file number as a column 
v <- lapply(1:length(LIST), function(i)data.frame(LIST[[i]], file=rep(i, nrow(LIST[[i]])))) 

#make one big data frame 
dat <- do.call(rbind, v)[, -1] 

#reorder said data frame 
dat[order(dat$state, dat$file), ] 
+0

이 방법을 사용하는 것이 좋습니다. 하지만 먼저 각 파일에 포함 된 더 큰 데이터 프레임에서 이름 열을 추출하기 위해이를 수정해야합니까? – cianius

+0

각 파일에 약 20,000 개의 이름이 있다고 가정하면 data.frame은 처리하기에 너무 커집니다. 첫 번째 파일의 길이 (고유 (file_name $ Name))는 9483입니다.이 파일을 데이터 프레임에서 사용할 수 있도록 목록으로 변환하면 R이 충돌합니다. – cianius

+0

괜찮 았어. 나는 그것을하는 방법을 이해했다. 그래도 고마워! 나는 너의 대답에서 조금 배웠다! – cianius

관련 문제