2014-04-27 2 views
3

.txt 파일에 들어 있으며 열이없는 행으로 구분 된 큰 데이터 세트가 있습니다. 불행히도 행은 대소 문자별로 클러스터됩니다. 다음과 같이 보입니다..txt 파일을 R, 알 수없는 구분 기호, 열 없음으로 읽음.

... 등등. 나는이 명령을 사용하여, 데이터의 변수 이름을 구분하기 위해 read.table 사용하여 시도 :

data1 <- read.table("Data.txt", header = FALSE, sep = ":", fill=TRUE) 

을 ...하지만 (즉, 경우에 따라서는 "V1"에 변수 이름을 배치 완전히 효과가 없었다 열이 상황으로 이어지는은하지 않았다 경우)에서 :

V1   V2 
1 v1case1 a 
2 v2case1 b 
3 v3case1 c 
4 v1case2 d 
5 v2case2 e 
6 v3case2 f 
7   v1case3 
8   v2case3 
9   v3case3 

A) (I가 사용할 수 있도록 별도의 컬럼에 변수 이름을 모두 추출하거나 더 나은 방법에 대한 어떤 제안 "if/else"를 사용하여 각 변수의 관련 데이터를 열로 끌어 넣을 새 변수를 작성) 또는 b)이 데이터 세트를 행/열 형식으로 두는 다른 방법?

모든 조언을 주시면 감사하겠습니다.

답변

2

stringrplyr 당신이 readLines()로 시작하는 경우 여기에 도움이 될 수 있습니다

library(stringr) 
library(plyr) 

dat <- readLines("rows.txt") 
print(dat) 
## [1] "v1(case1): a" "v2(case1): b" "v3(case1): c" "v1(case2): d" "v2(case2): e" "v3(case2): f" 

x <- ldply(str_match_all(dat, "^([[:alnum:]]+)\\(([[:alnum:]]+)\\):\ +([[:alnum:]]+)"))[,2:4] 
print(x) 
## 2  3 4 
## 1 v1 case1 a 
## 2 v2 case1 b 
## 3 v3 case1 c 
## 4 v1 case2 d 
## 5 v2 case2 e 
## 6 v3 case2 f 

난 당신처럼 보이게 결과 데이터 프레임을 필요로하는지 전혀 모르겠지만, reshape 또는 reshape2 당신의 휴식을 얻을 수 있습니다 그 길.

+0

(+1)'readLines'는 확실히 길입니다. –

0

에만 기본 R 사용 : 옵션 blank.lines.skip가 빈 라인의 문제를 해결 간다

dat = as.data.frame(scan('Data.txt', sep = ':', 
        what = list(case = character(), value = character()), 
        strip.white = TRUE, blank.lines.skip = TRUE)) 

합니다. 필요한 경우 @hrbrmstr의 제안을 사용하여 사례 이름을 추가로 처리 할 수 ​​있습니다.