2016-06-10 4 views
0

나는 파일 읽기 작업에 어려움이 있습니다. 일반적인 이전 회계 부서 (헤더, 제목, 페이지 및 유용한 표로 작성된 양적 및 질적 정보 포함)의 파일 .txt이 있습니다. (R 텍스트 파일에서 데이터 읽기

1) 회계 정보입니다 | 사이에 표에있는 정보를 추출 어떤 재판 : 나는 (read.table로 스캔)이 작업을 수행하려고이 파일에서 How the data looks

: 그것은 다음과 같습니다 당신이 고객 정보가에있다 볼 수 있습니다 : 데이터 프레임 또는 문자 벡터)

tabulated info to be extracted

2) 텍스트 파일에서 "고객"로 시작하는 변수 각 자막으로 포함하지 않은 쉬운 종료 itle은 다음 회계 정보 (채무), 다시 또 다른 고객 및 회계 정보 등을 제공합니다. 그래서 열이 아니라 행 (?)

I've는 read.table (여러 sepquote 매개 변수)를 시도하고 검사와 다음 문자 벡터 작업을 시도하는 데되었다.

감사합니다.

+0

이 파일은 고정 폭 파일이므로'read.fwf()'를 사용하면 더 편리 할 것입니다. – Andrie

+0

'read.fwf'가 어떤 표준 방법에 대해서도 전혀 도움이되지 않을 것이라고 생각합니다. – Altons

답변

1

전 거기에 있었으므로 당신이 겪고있는 일이 어떤 것인지 알 수 있습니다.

나는 당신에게 2 개의 뉴스를 가지고있다. 하나는 나쁜 것이고, 하나는 좋은 것이다. 나쁜 점은 SAS의 이러한 유형의 파일을 수천 번 읽었지만 결코 R이 아니란 것입니다. 그러나 좋은 소식은 제가 R에서 작업 할 수 있도록 몇 가지 팁을 줄 수 있다는 것입니다.

전략은 다음과 같습니다 :

1) 단일 열만 포함하는 데이터 프레임으로 파일을 읽어야합니다. 이 열은 문자이며 입력 파일의 전체 줄을 보유합니다. 즉 파일의 최대 줄이 80 인 경우 길이는 80입니다.

2) 이제 모든 레코드가 입력 파일의 한 줄과 같은 데이터 프레임이 있습니다. 이 시점에서 데이터 프레임의 번호가 파일의 행당 개수와 같거나 같은지 확인할 수 있습니다.

3) 이제 grep을 사용하여 기준을 충족하는 라인 (예 : '고객'으로 시작하는 부제) 만 제거하거나 유지할 수 있습니다. 여기에서 정규 표현식이 정말 유용 할 수 있습니다.

4) dataframe는 이제 (즉 라인이 'Country' 또는 /\d{3} \d{8}/ 또는 ' Total'로 시작하는 '고객'패턴과 테이블 패턴)과 일치하는 기록이있다.

5) '고객'을 찾을 때마다 +1을 증가시키는 그룹 변수를 만드는 것이 필요합니다. 따라서 group = 1은 group이 group = 2 인 'Customer 010343'을 찾을 때까지 동일한 값을 반복합니다. 또는 새로운 ID가 발견 될 때까지 그룹이 고객 ID가 될 수 있습니다. 새로운 ID가 발견 될 때까지 ID를 유지해야합니다.

마지막 단계부터 고객과 테이블을 쉽게 식별 할 수 있으므로 많은 도움이됩니다. 테이블 문자열을 표 형식으로 출력하는 함수를 만들 수 있습니다.

단일 테이블에서 처리하거나 n 데이터 프레임에서 분할하여 개별적으로 처리할지 여부는 사용자가 결정합니다.

SAS에는 기준과 일치하는 각 줄을 다른 기준과 다르게 처리 할 수있는 포인터 (@) 및 보존 (보관 문) 개념이 있으므로 출력 데이터 집합에 이미 열과 고객 정보가 표 형식으로 포함되어 있습니다.

도움이되기를 바랍니다.

+0

감사합니다. Altons! 나는이 전략을 염두에 두겠다. 그러나 R 눈으로 .... 무슨 일이 일어나는지 보자! – Lucas

관련 문제