2016-08-05 2 views
0

실제 데이터 이전에 내보내는 데이터에 대한 정보가있는 자동 엑셀 내보내기를 처리하므로 데이터를 쉽게 읽을 수 있습니다. 붙여 넣기, 대개는 csv 유도체를 사용하고 있음)동일한 엑셀 시트의 두 테이블을 하나의 R 데이터 세트로 통합해야합니다.

> Site ID: Site ID uninitialized           
>     Serial Number: ####  
> TMI Serial Number: ####-#-#####  
> SW Version: Comm. 003.003.001 2015-05-27 15:51:17 buildmgr 
>OrganType: [some text] 
>OrganID: [random string]           
>     Session Date: 2015-10-21 Session Time: 08:45:18     
> Date  Time  Var1 Var2 Var3 Var4 Var5 
>      Time L/min L/min L/min mmHg 
> 10/21/2015 8:47:26 --- --- --- --- 0 
> 10/21/2015 8:49:26 --- --- --- --- 0 
> 10/21/2015 9:33:26 --- --- --- --- 0 
> 10/21/2015 9:35:26 --- --- --- --- 0 
> 10/21/2015 9:37:26 --- --- --- --- 0 
> 10/21/2015 9:39:26 --- 1.46 0.97 1.53 13 

누락 된 데이터가 있음을 나타냅니다. 나는 내 인생에서 R이 어떻게 진행되는지 이해할 수있는 방법을 찾지 못했습니다. 이상적으로는 헤더 데이터를 데이터 테이블에 변수로 통합하여 나중에 여러 파일을 마스터 목록에 병합 할 수 있기를 바랍니다. Excel에서 손으로 수정해야합니까, 아니면 사용할 수있는 R 구문이 있습니까?

+0

몇 개의 파일에 대해 이야기하고 있습니까? 그 파일을 자동으로 처리하는 것은 시간이 많이 걸릴 것입니다. 왜냐하면 포맷이 모든 곳에서 이루어지기 때문입니다. 텍스트 파일을 사전 처리하고 적절한 CSV로 변환하는 대신 파이썬을 사용합니다. 파일이 많으면 정당화 될 수 있습니다. 테이블 형식 (헤더의 데이터를 열로 포함하므로이 경우 변수를 원하지 않는다)에서 Excel을 수정하는 것이 좋습니다. 일부 Excel 기술을 사용하면 작업을 자동화하는 데 도움이되는 일종의 템플릿을 만들 수 있습니다. –

+0

@Scott 헤더 데이터가 항상 같은 수의 행을 차지합니까? –

답변

0

XLConnect 패키지를 사용하여 Excel 파일을 읽는 경우 시작 및 끝 행을 지정하여 워크 시트를 읽을 수 있습니다. 그런 다음 첫 번째 data.frame 헤더를 만들고 두 번째 "real"data.frame을 만들 수 있습니다. 그런 다음 data.frame에 새 열을 만들어 머리글에서 가져온 데이터를 통합합니다.

레이아웃이 변경되면 다른 접근 방식이 필요할 수 있습니다. 이게 도움이 되길 바란다.

0

하나의 아이디어는 헤더가 일치하는 경우 정규식을 사용하여 헤더를 구문 분석하는 것입니다. 가정 데이터가 testdata.csv라는 파일에 있습니다

writeLines(text="Site ID: Site ID uninitialized           
        Serial Number: ####  
TMI Serial Number: ####-#-#####  
SW Version: Comm. 003.003.001 2015-05-27 15:51:17 buildmgr 
OrganType: [some text] 
OrganID: [random string]           
        Session Date: 2015-10-21 Session Time: 08:45:18     
Date  Time  Var1 Var2 Var3 Var4 Var5 
         Time L/min L/min L/min mmHg 
10/21/2015 8:47:26 --- --- --- --- 0 
10/21/2015 8:49:26 --- --- --- --- 0 
10/21/2015 9:33:26 --- --- --- --- 0 
10/21/2015 9:35:26 --- --- --- --- 0 
10/21/2015 9:37:26 --- --- --- --- 0 
10/21/2015 9:39:26 --- 1.46 0.97 1.53 13", 
    con="testdata.csv") 

헤더 구문 분석하는 방법의 예 :

library(stringr) 
header <- readLines("testdata.csv", n=7) 
headers <- lapply(header[1:6], str_match, "(^.*?):(.*)") 
date <- c(field="Date", 
    value=str_match(header[7], "[0-9]{4}-[0-9]{2}-[0-9]{2}")) 
time <- c(field="Time", 
    value=str_match(header[7], "[0-9]{2}:[0-9]{2}:[0-9]{2}")) 
d <- do.call(rbind, 
    lapply(headers, function(x) c(str_trim(x[2]), str_trim(x[3])))) 
d <- rbind(d, date, time) 
d <- data.frame(d, row.names=seq_len(nrow(d))) 

출력 :

> d 
       field           value 
1   Site ID       Site ID uninitialized 
2  Serial Number           #### 
3 TMI Serial Number         ####-#-##### 
4  SW Version Comm. 003.003.001 2015-05-27 15:51:17 buildmgr 
5   OrganType         [some text] 
6   OrganID        [random string] 
7    Date          2015-10-21 
8    Time          08:45:18 

당신은 다음이 데이터를 병합/가입 할 수 있습니다 데이터의 테이블에.

관련 문제