2014-09-25 1 views
0

61 개의 열이있는 데이터 프레임을 만드는 R 스크립트가 있습니다. data.frame은 여러 개의 csv 파일을 data.frames의 목록으로 읽어 들이고, 목록의 각 data.frame에 일반적으로 이름이 지정된 열이 결과 data.frame의 동일한 열에 채워지도록 목록을 병합하여 만들어집니다.데이터 명성에서 스파 스 열을 결합하는 방법은 무엇입니까?

결합해야 할 열의 일부가 csv 파일에서 일관되게 이름이 지정되지 않았습니다 (예 : date.received vs received.on.date vs date.sample.received). 그리고 이들을 결합하는 최선의 방법이 궁금합니다. .

  • 이 lapply 목록을 통해 큰에 병합하기 전에 열 이름을 변경 :

    나는 몇 가지 아이디어를 가지고 있었다.

  • 제가 그 행의 값을 갖는 칼럼은 는

사용되도록 가능한 두 번째 방법 인 제 data.frame가 있으면 동일해야한다는 열을 결합 (방법?) 또는 더 좋은 방법이 있습니까?

답변

0

rbind_alldplyr 패키지에서 두 번째 접근이 가능하며 쉽게 진행됩니다.

colnames_synonymous <- c("date.received", "received.on.date", "date.sample.received") 

list_of_dfs <- lapply(list_of_dfs, function(df) { 
    names(df)[names(df) %in% colnames_synonymous] <- "date_received" 
    return(df) 
}) 
: 당신이 함께 적층한다 열의 이름의 패턴에 대한 정보가있는 경우 모든

첫째, 난 당신처럼 쌓아 그것을 해결하기 위해 시도하는 것이 좋습니다 방법은 다음과 같습니다이다

dplyr::rbind_all(list_of_dfs) 

어쩌면 당신이 바로 스택 모든 열을 얻기 전에 몇 가지 조정을해야 할 것,하지만 지금, 당신이 할 필요가 그렇게 할 수있는 lapply 기능을 변화 :

지금 당신은 갈 수 있습니다. rbinding 후에 일부 컬럼 변환을 만드는 것보다이 방법이 더 쉽습니다.

+0

이것이 실제로 첫 번째 방법을 구현하는 방법입니다. 두 번째 접근법이 더 어려워지는 이유는 무엇입니까? –

+0

사실,이 질문에 대한 결정적인 대답은 없지만 첫 번째 접근법 (내 대답에는 "두 번째"라고 부름, 미안합니다) = P를지지하려고 노력할 것입니다. 우선 두 번째 방법을 통해 불필요한 대용량 데이터 프레임이 생겨 메모리 문제가 발생할 수 있습니다. 얼마나 많은 dfs를 처리 하느냐에 따라,이 큰 데이터에서 몇 가지 수리와 다른 작업을 수행해야한다면, 어려울 수 있습니다. 또한이 첫 번째 접근법의 한 가지 장점은 열을 정확하게 얻으려면 첫 번째 적용을 향상시키는 것입니다. – Athos