2016-08-05 9 views
0

pdftools 패키지로 R의 pdf를 읽은 후 목록의 모든 요소가 테이블과 같은 구조를 갖는 목록을 얻습니다. 목록의 각 요소를 집계하고 싶습니다 테이블 구조를 데이터 프레임으로 유지합니다. 나는이 시도했다 https://drive.google.com/open?id=0Bydt25g6hdY-b0NwaDF1NWE0NkU목록의 요소를 테이블로 변환

:

은 여기에서 생성 된 txt 파일에 대한 링크가

table <- list(0) 
for (i in test5) { table <- append(table, i)} 

을하지만 같은 목록을 가져옵니다.

각 열이 변수이고 각 행이 관찰 일 때 가능한 한 날짜 열을 제거하여 열을 방해하지 않는 테이블로 만들 수 있기를 바랍니다. 여기

캐릭터리스트에 마이그레이션 공백으로 readLines() 다음 분할 선을 사용하여 문서 스캐닝을 고려 dput(table[1:3])

list("                   ", 
c("\r\n Thu 04/21/2016    ", "\r\n _No Call Type Attached        0 00:00 00:00  00:00  00:00 00:00  0  0%  0% 00:00  00:00\r\n IEX Billing English       12.5% 1 03:17 00:55  00:03  04:15 00:00  2 200%  0% 00:27  00:00  1 100%\r\n IEX VOB English        50.0% 4 03:15 01:29  01:12  05:57 00:00  1 25%  0% 05:56  00:00  4 100%\r\n IEX VOB Spanish        37.5% 3 03:59 00:20  00:28  04:48 00:00  3 100%  0% 00:20  00:00  3 100%\r\n " 
), "\r\n") 
+0

, 당신은 같은 목록을 초기화 할 수 있습니다. 대신에'x = list()'를 사용하십시오. – Frank

+0

고맙습니다. 프랭크, 앞으로 그렇게 할 것입니다. – Carlos

답변

1

의 출력이다. Filter() 호출은 한 문자 및 빈 요소를 제거하는 데 사용됩니다.

file <- "C:\\Path\\To\\Text.txt" 

# CONNECT TO FILE, READ LINES 
con <- file(description=file, open="r") 
pdftext <- readLines(con, warn=FALSE) 
close(con) 

# FILTER OUT ONE-CHARACTER ELEMENTS 
pdftext <- Filter(function(x) nchar(x)>1, pdftext) 

# SPLIT LINES BY WHITESPACE/FILTER ONE-CHARACTER ELEMENTS 
datalines <- lapply(pdftext, function(x) { 
       tmp <- strsplit(x, "\\s+")[[1]] 
       Filter(function(l) nchar(l)>1, tmp) 
}) 

# FILTER EMPTY ELEMENTS 
datalines <- Filter(length, datalines) 

# FILL IN NAs TO FIT TABLE COLS (USING 16, LARGEST LENGTH) 
datalines <- lapply(datalines, function(x) { 
    if(length(x) < 16) { x <- c(x, rep(NA, 16 - length(x))) 
    } else { 
    x 
    } 
}) 

# BIND ALL LINES INTO CHARACTER MATRIX 
datamatrix <- do.call(rbind, datalines) 

원자 벡터와 달리 출력

#  [,1] [,2]   [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]  [,11] [,12] 
# [1,] "Thu" "04/21/2016" "Direct" "Internal" "Calls:" "Direct" "External" "Calls:" "Outbound" "Calls:" NA  NA  
# [2,] "_No" "Call"  "Type" "Attached" "00:00" "00:00" "00:00" "00:00" "00:00" "0%"  "0%"  "00:00" 
# [3,] "IEX" "Billing" "English" "12.5%" "03:17" "00:55" "00:03" "04:15" "00:00" "200%"  "0%"  "00:27" 
# [4,] "IEX" "VOB"  "English" "50.0%" "03:15" "01:29" "01:12" "05:57" "00:00" "25%"  "0%"  "05:56" 
# [5,] "IEX" "VOB"  "Spanish" "37.5%" "03:59" "00:20" "00:28" "04:48" "00:00" "100%"  "0%"  "00:20" 
... 

Character Matrix Output

+0

이것은 정확히 내가 뭘 찾고 있었는지, 고마워요 @ Parfait – Carlos

+0

그레이트! 다행히 도울 수있어. – Parfait

관련 문제