존 호프킨스 대학 데이터 과학 시리즈 과정 - R 언어: 데이터 유형

1. 원자 대상
R 언어에는 5가지 가장 기본적인 원자 대상이 있다.
1) 문자형character
문자형 객체 사용은 로 구성됩니다.
2) 수치형numeric(real numbers)
숫자의 대상은 R에서 기본적으로 수치형 (numeric) 이다. 만약 정수형으로 지정할 데이터가 필요하다면, 숫자를 바꾼 후에 L을 붙여야 한다.예를 들어 숫자 123은 기본값numeric형이고 인덱스형이 필요하면 123L로 표시할 수 있습니다.
3) 정수 인덱스
4) 복수형complex
복수의 실부는 실수로 표시하고, 허부는 실수+i로 표시한다.예: 3+2i, 2+1i 등.
5) 논리적 로지컬(True/False)
참고: R 언어에는 다음과 같은 몇 가지 특수 객체가 있습니다.
  • Inf\-Inf(infinity)는 플러스와 마이너스가 무한대
  • 임을 나타냅니다.
    <span style="font-size:18px;"><span style="font-size:18px;">> 1/0
    [1] Inf
    > -1/0
    [1] –Inf</span></span>
  • Na(not available)는 부족값
  • 을 나타냅니다.
    NaN(not anumber)은 의도하지 않은 값을 나타냅니다.
    <span style="font-size:18px;"><span style="font-size:18px;">> 0/0
    [1] NaN</span></span>

    2. 값 및 주석 지정
    R에서 값을 부여하는 것은 지향 기호인'<-'로 표시하여 매우 형상적이지만shift 키를 눌러야만 기호'<'를 칠 수 있고 값 부여 기호는 두 글자로 구성되어 있기 때문에 코드를 쓸 때 매우 불편하다.
    R 언어는 두 개의 "##"로 주석을 달고 ## 이후의 코드는 실행되지 않으며 역할 영역은 줄 안에서 유효합니다.
    <span style="font-size:18px;"><span style="font-size:18px;">> x<-c(1,2,3)##y<-4 
    > x
    [1] 1 2 3
    > y
     :  'y'</span></span>

    3. 벡터(vector)
    R의 벡터는 함수 c()(concatenate)로 벡터를 작성할 수 있으며, 같은 벡터 내의 객체 유형은 같아야 합니다.
    <span style="font-size:18px;"><span style="font-size:18px;">> x <- c(0.5, 0.6) ## numeric
    > x <- c(TRUE, FALSE) ## logical
    > x <- c(T, F) ## logical
    > x <- c("a", "b", "c") ## character
    > x <- 9:29 ## integer
    > x <- c(1+0i, 2+4i) ## complex</span></span>

    함수vector()를 사용하여 벡터를 초기화할 수도 있습니다:vector("datatype",length=length of vector)
    <span style="font-size:18px;"><span style="font-size:18px;">> x<-vector("integer",length=5)
    > x
    [1] 0 0 0 0 0
    > y<-vector("character",length=5)
    > y
    [1] "" "" "" "" ""</span></span>

    4. 최소 공통 기능 (least common denominator)
    같은 벡터에서 서로 다른 유형의 대상이 있으면 R은 오류를 보고하지 않고 저공유 특성을 준수하여 높은 유형의 대상을 낮은 유형으로 전환한다.
    <span style="font-size:18px;">> x<-c(TRUE,2,1.2,3+2i,"Hello")
    > x
    [1] "TRUE"  "2"     "1.2"   "3+2i"  "Hello"##
    > x<-c(TRUE,2,1.2,3+2i)
    > x
    [1] 1.0+0i 2.0+0i 1.2+0i 3.0+2i
    > x<-c(TRUE,2,1.2)
    > x
    [1] 1.0 2.0 1.2
    > x<-c(TRUE,2)
    > x
    [1] 1 2</span>

    상례에서 알 수 있듯이 기본 대상의 등급은 높은 것에서 낮은 것으로logic,integer,numeric,complex,character이다.
    5. 유형 강전
    R 통과 as.데이터 type(object) 함수는 대상 유형을 강제로 변환하고 변환 원칙도 높은 등급의 대상은 낮은 등급으로 변환할 수 있지만 낮은 등급의 대상은 높은 등급으로 변환할 수 없다(변환 시 데이터 정보를 잃어버릴 수 있다).
    <span style="font-size:18px;">> x <- 0:6
    > class(x)
    [1] "integer"
    > as.numeric(x)
    [1] 0 1 2 3 4 5 6
    > as.logical(x)
    [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE
    > as.character(x)
    [1] "0" "1" "2" "3" "4" "5" "6"
    > as.numeric(x)
    [1] NA NA NA
     :
     NA
    > x<-3+2i
    > as.numeric(x)
    [1] 3
     :
     </span>

    6. 행렬
    행렬은 2D 배열로, 행렬의 객체는 함수 matrix를 통해 다음과 같은 형식으로 행렬을 만들 수 있습니다.
    m<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logic_value)
    <span style="font-size:18px;">> m<-matrix(nrow=2,ncol=3)
    > m
         [,1] [,2] [,3]
    [1,]   NA   NA   NA
    [2,]   NA   NA   NA
    > m<-matrix(1:6,nrow=2,ncol=3)
    > m
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6</span>

    행렬은 기본적으로 열로 채워집니다. 행렬을 줄로 채워야 할 경우byrow 속성을 TRUE로 설정해야 합니다.
    <span style="font-size:18px;">> m<-matrix(1:6,nrow=2,ncol=3,byrow=TRUE)
    > m
         [,1] [,2] [,3]
    [1,]    1    2    3
    [2,]    4    5    6
    </span>

    또한 dim() 함수를 사용하여 벡터의 객체를 지정된 행렬에 추가하기 전에 벡터를 작성할 수도 있습니다.
    <span style="font-size:18px;">> a<-c(2,3)
    > a
    [1] 2 3
    > m<-c(1,2,3,4,5,6)
    > dim(m)<-c(2,3)
    > m
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
    </span>

    dim() 함수는 행렬의 차원을 보는 데도 사용할 수 있습니다.
    <span style="font-size:18px;">> dim(m)
    [1] 2 3
    </span>

    또한 매트릭스는 함수 cbind()와 rbind() 함수를 통해 벡터를 매트릭스로 결합할 수 있습니다.
    <span style="font-size:18px;">> x<-c(1,2,3)
    > y<-c(4,5,6)
    > z<-c(7,8,9)
    > cbind(x,y)
         x y
    [1,] 1 4
    [2,] 2 5
    [3,] 3 6
    > rbind(x,y)
      [,1] [,2] [,3]
    x    1    2    3
    y    4    5    6
    > rbind(x,y,z)
      [,1] [,2] [,3]
    x    1    2    3
    y    4    5    6
    z    7    8    9
    </span>

    7. 목록
    목록 (list) 은 특수한 벡터로,list는 서로 다른 유형의 대상을 포함할 수 있으며, 심지어는 벡터 대상과 행렬 대상 등을 포함할 수 있다.목록의 각 객체는 쉼표로 구분되고 각 객체 색인 번호는 "[]"로 표시되며 각 객체의 요소는 "[]"로 표시됩니다.
    <span style="font-size:18px;">> x<-list("hello",1:4L,3.2,4+5i,TRUE)
    > x
    [[1]]
    [1] "hello"
    
    [[2]]
    [1] 1 2 3 4
    
    [[3]]
    [1] 3.2
    
    [[4]]
    [1] 4+5i
    
    [[5]]
    [1] TRUE
    </span>

    8. 계수(factor)
    인자는 일반적으로 분류 데이터를 나타내는 데 쓰이며 데이터는 질서가 있을 수도 있고 무질서할 수도 있다.factor를 사용하면 분류 라벨이 비교적 직관적임을 나타낸다. 예를 들어'male','female'을 사용하는 것이 1, 2와 같은 수량 값을 사용하는 것보다 낫다.
    <span style="font-size:18px;">> x <- factor(c("yes", "yes", "no", "yes", "no"))
    > x
    [1] yes yes no  yes no 
    Levels: no yes
    > table(x)
    x
     no yes 
      2   3
    </span>

    levels에서 대상의 순서는 매개 변수 levels를 통해 사용자 정의할 수 있습니다.
    <span style="font-size:18px;">> x <- factor(c("yes", "yes", "no", "yes", "no"),levels=c("yes","no"))
    > x
    [1] yes yes no  yes no 
    Levels: yes no
    </span>

    9. 부족치
    is.na () 테스트 대상이 NA, is 인지 여부입니다.nan() 은 객체가 NaN인지 여부를 테스트하는 데 사용됩니다.NA는 Nan이지만, Nan은 NA가 아니며, Nan은 Na보다 더 깊습니다.
    <span style="font-size:18px;">> b<-c(1,2,3,NA,4)
    > is.na(b)
    [1] FALSE FALSE FALSE  TRUE FALSE
    > is.nan(b)
    [1] FALSE FALSE FALSE FALSE FALSE
    > b<-c(1,2,3,NaN,4)
    > is.na(b)
    [1] FALSE FALSE FALSE  TRUE FALSE
    > is.nan(b)
    [1] FALSE FALSE FALSE  TRUE FALSE
    </span>

    10. 데이터 상자
    데이터 상자는 Tabular 데이터를 저장하는 데 사용되며 데이터로 사용됩니다.frame()이 생성됩니다.데이터 상자를 특수한list 집합으로 볼 수 있으며, 각list의 길이가 같고 대응하는 위치의 데이터 형식이 같습니다.
    <span style="font-size:18px;">> x<-data.frame(a=1:4,b=c("a","b","c","d"))
    > x
      a b
    1 1 a
    2 2 b
    3 3 c
    4 4 d
    > nrow(x)
    [1] 4
    > ncol(x)
    [1] 2
    </span>

    11. 이름 지정
    R은 함수 names () 를 통해 생각된 대상에 이름을 붙일 수 있고,dimnames () 를 통해 행렬에 이름을 붙일 수도 있으며, 목록에 이름을 붙일 수도 있다.
    <span style="font-size:18px;">> x<-c(1,2,3,4)           ## 
    > names(x)<-c("one","two","three","four")
    > x
      one   two three  four 
    1     2     3     4
    > names(x)
    [1] "one"   "two"   "three" "four"
    > y<-list(one=1,two=2,three=3)   ## 
    > y
    $one
    [1] 1
    
    $two
    [1] 2
    
    $three
    [1] 3
    > m<-matrix(1:4,nrow=2,ncol=2)
    > m
         [,1] [,2]
    [1,]    1    3
    [2,]    2    4
    > dimnames(m)<-list(c("one","two"),c("three","four"))
    > m
        three four
    one     1    3
    two     2    4
    </span>

    좋은 웹페이지 즐겨찾기