2013-08-12 2 views
3

나는 각 필드가 지금은 하나의 문자에 R.복수 문자 분리 기호가있는 "csv"파일을 R로 가져 오시겠습니까?

read.table() instists의 sep= 인수를 가져올려고하는 \t&%$#로 구분된다 "CSV"텍스트 파일이 있습니다. 이 파일을 직접 가져올 수있는 빠른 방법이 있습니까?

데이터 필드의 일부

는 그래서 다른 문제를 만들 수 있습니다처럼 간단 보인다 뭔가에 구분 기호를 변경, 탭, 따옴표를 포함하는 사용자가 제출 한 텍스트 및 기타 지저분한 것들이다.

+7

지저분한 샘플을주고 싶습니까? 그것이 단일 파일이라면 내 생각은 원래 파일에서 찾기 - 바꾸기 만하면 될 가치가 있습니다. 그래도 문제가 해결되지 않는다면, 구조화되지 않은 데이터 (예 :'readLines')를 읽은 다음 가져온 문자열에 regexp를 사용하면 문제가있는 행을 별도로 처리 할 수 ​​있습니다. – Thomas

+0

최고는 아니하지만 가치가 시도 : http://stackoverflow.com/questions/15539912/how-to-use-read-csv-or-read-table-to-read-comma-delimited-file-where-fields -have –

답변

1

this post에서 설명했듯이 문자열 해석을 사용하지 않고 R에서는 가능하지 않습니다. 파일을 다른 언어 (Awk, Perl, Python 등)로 미리 파싱하거나 R 행으로 결과 문자열을 파싱 할 수 있습니다.

+0

고마워요. 제가 찾고 있던 다른 게시물이었습니다. –

4

다음 코드는 여러 구분 문자를 처리 할 수 ​​있습니다 :

#fileName <- file name with fully qualified path 
#separators <- each of them separated by '|' 

read <- function(fileName, separators) { 
    data <- readLines(con <- file(fileName)) 
    close(con) 
    records <- sapply(data, strsplit, split=separators) 
    dataFrame <- data.frame(t(sapply(records,c))) 
    rownames(dataFrame) <- 1: nrow(dataFrame) 
    return(as.data.frame(dataFrame,stringsAsFactors = FALSE)) 
} 
관련 문제