정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 해시 테이블

    • 작성자     : 박진만

    • 작성일     : 2020-03-26

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

    • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

    • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

    • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

    • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

     

     

    [특징]

    • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    • 해시 테이블이란 Perl이나 Python 등의 프로그래밍 언어로 볼 수 있는 사전에 해당하는 자료형이며, 기본적으로 R에는 없다. 

    • 그러나 R 벡터 또는 리스트에 개체 이름을 붙이는 것이 가능하고,이를 이용하여 "해시 테이블과 비슷한 것"을 만들 수는 있다.

    [벡터에서 해시 테이블을 생성]

    • 가장 쉬운 예로는 R 벡터에 이름을 붙이는 것만으로 "비슷한 것"을 만들 수있다.

    • R 벡터를 이용하기 때문에 하나의 키에 대해 하나의 값만 저장할 수 있다. 또한 모든 값의 형태가 같아야 한다.

    aaa2a <- c("A", "C", "D", "E", "F", "G", "H")
    names(aaa2a) <- c("ALA", "CYS", "ASP", "GLU", "PHE", "GLY", "HIS")
    
    aaa2a["ALA"]
    ## ALA
    ## "A"
    
    aaa2a[c("PHE", "GLY", "CYS")]
    ## PHE GLY CYS
    ## "F" "G" "C"
    
    as.character(aaa2a[c("PHE", "GLY", "PHE", "ALA")])
    ## [1] "F" "G" "F" "A"

     

    [리스트에서 해시 테이블을 생성]

    • R의 리스트는 다양한 형태의 객체를 저장할 수있다. 

    • 또한 리스트 내부에서 리스트를 저장할 수도 있다.

    • 따라서 R의 리스트를 이용하여 "비슷한 것"을 만드는 경우 다른 프로그램에서 의미하는 해시와 이차원 딕셔너리 등을 구현할 수 있다.

    • 아래의 예시는 유전자 ID를 부여하고 그에 연관된 GEO ID를 얻을 수있는 해시 테이블을 리스트로 작성한다.

    • 여기서 값을 얻을 때 unlist및 as.character등의 기능을 함께 이용하면 좋다.

    GENE2GO <- vector("list", length = 5)
    names(GENE2GO) <- c("AT3G04930", "AT1G80200", "AT5G19172", "AT3G04480", "AT3G05130")
    GENE2GO[["AT3G04930"]] <- c("GO:0003677", "GO:0005634", "GO:0006355")
    GENE2GO[["AT1G80200"]] <- c("GO:0003674", "GO:0008150")
    GENE2GO[["AT5G19172"]] <- c("GO:0005576", "GO:0031640", "GO:0050832")
    GENE2GO[["AT3G04480"]] <- c("GO:0004521", "GO:0090502")
    GENE2GO[["AT3G05130"]] <- c("GO:0003674")
    
    unlist(GENE2GO[c("AT3G04930", "AT3G04480")])
    ##   AT3G049301   AT3G049302   AT3G049303   AT3G044801   AT3G044802
    ## "GO:0003677" "GO:0005634" "GO:0006355" "GO:0004521" "GO:0090502"
    
    as.character(unlist(GENE2GO[c("AT3G04930", "AT3G04480")]))
    ## [1] "GO:0003677" "GO:0005634" "GO:0006355" "GO:0004521" "GO:0090502"

     

    [해시 안의 해시]

    • 리스트에서 리스트를 저장하여 "해시 안의 해시"를 R로 구현할 수 있다.

    GENE2GO <- vector("list", 2)
    names(GENE2GO) <- c("AT3G04930", "AT2G17260") 
    GENE2GO[["AT3G04930"]] <- list(
                    MF = c("GO:0003677"),
                    CC = c("GO:0005634"),
                    BP = c("GO:0006355")
                  )
    GENE2GO[["AT2G17260"]] <- list(
                    MF = c("GO:0005217"),
                    CC = c("GO:0005576", "GO:0005886"),
                    BP = c("GO:0006874", "GO:0010118", "GO:0030003", "GO:0009416")
                  )
    
    GENE2GO[["AT2G17260"]][["CC"]]
    ## [1] "GO:0005576" "GO:0005886"

     

    [다음글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 문자열

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 문자열 작성자 : 박진만 작성일 : 2020-03-26 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

    shlee1990.tistory.com

     

    [이전글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : 리스트

    정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 리스트 작성자 : 박진만 작성일 : 2020-03-25 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

    shlee1990.tistory.com

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기