2013-04-18 3 views
0

R에서 데이터 조작에 대한 질문이 있습니다. 분석하려고하는 ".csv"파일에는 2 개의 열이 있지만 각 열에는 여러 유형의 데이터가 들어 있습니다. 데이터 유형은 단락 나누기로 구분됩니다. 아래처럼숫자 행 데이터를 텍스트 머리글로 새 열로 나누기

"A","B" 
1,2 
3,4 

"C","D" 
5,6 
7,8 

"E","F" 
9,10 
11,12 

각 데이터 세트가 하나의 열이되도록 데이터를 변환하고 싶습니다. 예를 들어, 위의 내용을 다음과 같이 변형 해주세요 :

"A","B","C","D","E","F" 
1,2,5,6,9,10 
3,4,7,8,11,12 

어떤 도움을 주시면 감사하겠습니다. 당신은 그런 1,4,7 라인 ... 2,5,8 라인을 선택하는 재활용을 사용할 수 있습니다

답변

0

등 ... 예를 들어 :

(1:9)[c(TRUE,FALSE,FALSE)] 
[1] 1 4 7 
> (1:9)[c(FALSE,TRUE,FALSE)] 
[1] 2 5 8 
> (1:9)[c(FALSE,FALSE,TRUE)] 
[1] 3 6 9 

은 당신이 할 수있는 데이터를 사용 :

dat <- read.table(text='"A","B" 
1,2 
3,4 

"C","D" 
5,6 
7,8 

"E","F" 
9,10 
11,12',sep=',') 


rbind(
    as.character(unlist(dat[c(TRUE,FALSE,FALSE),])), 
unlist(dat[c(FALSE,TRUE,FALSE),]), 
unlist(dat[c(FALSE,FALSE,TRUE),])) 


    V11 V12 V13 V21 V22 V23 
[1,] "A" "C" "E" "B" "D" "F" 
[2,] "1" "4" "6" "12" "14" "10" 
[3,] "3" "5" "2" "13" "15" "11" 
2

당신은 \n\n하여 텍스트를 분할 한 후 read.csv를 사용하여 함께 다음 cbind 결과

txt <- '"A","B" 
1,2 
3,4 

"C","D" 
5,6 
7,8 

"E","F" 
9,10 
11,12' 

do.call(cbind, lapply(unlist(strsplit(txt, split='\n\n')), function(x) read.csv(text=x))) 

## A B C D E F 
## 1 1 2 5 6 9 10 
## 2 3 4 7 8 11 12 
수 있습니다 당신은 1 개 문자열로 파일의 내용을 읽을해야하는 경우3210

또한, 당신은 사용하여 작업을 수행 할 수 있습니다

txt <- readChar('temp.txt', nchars=file.info('temp.txt')$size) 
txt 
## [1] "\"A\",\"B\"\r\n1,2\r\n3,4\r\n\r\n\"C\",\"D\"\r\n5,6\r\n7,8\r\n\r\n\"E\",\"F\"\r\n9,10\r\n11,12"