R 언어 노트 3: R 객체의 하위 집합을 추출하여 데이터 상자의 부족한 값을 모호하게 일치시키고 제거합니다.

20737 단어 R

Subsetting R Objects


서브집을 취하는 세 가지 기본 방법

  • [: 단일 대괄호]는 벡터의 하위 집합이나 벡터와 같은 객체를 반환합니다. 또한 객체에서 여러 요소
  • 을 선택하는 데 사용할 수 있습니다.
  • [:"쌍방 괄호"는 단일 요소를 추출하고 목록이나 데이터 상자의 요소를 추출하는 데만 사용되지만, 목록이나 데이터 상자의 요소 종류가 유일하지 않기 때문에 대상의 유형이 반드시 목록이나 데이터 상자
  • 이 아니다.
  • $: "달러 기호"는 이름이 있는 목록이나 데이터 상자의 요소를 추출하는 것입니다
  • (1) 벡터 추출 서브집합


    예를 들다.
  • 괄호 + 디지털 인덱스:
  • > x "a", "b", "c", "c", "d", "a")  
    > x[2]            ##  
    [1] "b"
    > x[1:4]          ##  
    [1] "a" "b" "c" "c"
    > x[c(1, 3, 4)]   ##  
    [1] "a" "c" "c"

    2. 괄호 + 논리 색인(문자순):
    > x "a", "b", "c", "c", "d", "a")  
    > x[x > "a"]      ##  a 
    [1] "b" "c" "c" "d"

    3. 논리적 벡터 만들기
    > u  "a"
    > u
    [1] FALSE  TRUE  TRUE  TRUE  TRUE FALSE
    > x[u]
    [1] "b" "c" "c" "d"

    (2) 행렬 추출 서브집합


    행렬 색인 서브집합은 줄 색인과 열 색인을 통해 완성할 수 있습니다.
    예를 들어 아래 2*3의 행렬
    > x <- matrix(1:6, 2, 3)
    > x
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
    > x[1, 2]            
    [1] 3
    > x[, 1]
    [1] 1 2
    > x[1, 2, drop = FALSE]   ##  drop[,1]
    [1,]    3
    > x[, 1, drop = FALSE]
         [,1]
    [1,]    1
    [2,]    2

    (3) 목록 추출 서브셋


    목록 하위 세트는 [], [], [$또는
    > ##  
    > x 1:4, bar = 0.6)
    > x
    $foo
    [1] 1 2 3 4
    
    $bar
    [1] 0.6
    > ##  
    > x[1]            ##  
    $foo
    [1] 1 2 3 4
    > x[[1]]
    [1] 1 2 3 4
    > x$foo
    [1] 1 2 3 4
    

    리스트 서브집합 방법의 장점은 순서를 기억할 필요가 없고 이름만 있으면 된다는 것이다.
    그러나 목록에서 여러 요소를 추출하려면 단일 괄호(양쪽 괄호와 달러 기호는 단일 요소만 추출할 수 있음)만 사용할 수 있고 순서를 알 수 있습니다.
    > x list(foo = 1:4, bar = 0.6, baz = "hello")
    > x[c(1, 3)]
    $foo
    [1] 1 2 3 4
    
    $baz
    [1] "hello"

    괄호와 달러 기호의 차이점:
    달러 기호는 목록에 존재하는 원소 이름이어야 한다.
    쌍방 괄호는 후속 재할당 변수 이후의
    > x 1:4, bar = 0.6, baz = "hello")
    > name "foo"
    >
    > ## computed index for "foo"
    > x[[name]]  
    [1] 1 2 3 4
    >
    > ## element "name" doesn’t exist! (but no error here)
    > x$name     
    NULL
    >
    > ## element "foo" does exist
    > x$foo      
    [1] 1 2 3 4

    그 밖에 쌍방의 괄호는 하나의 정수 수열을 얻을 수 있는데, 단지 하나의 숫자만이 아니다
    > x 10, 12, 14), b = c(3.14, 2.81))
    > 
    > ## Get the 3rd element of the 1st element
    > x[[c(1, 3)]]  
    [1] 14
    > 
    > ## Same as above
    > x[[1]][[3]]   
    [1] 14
    > 
    > ## 1st element of the 2nd element
    > x[[c(2, 1)]]  
    [1] 3.14

    (4) 모호 일치


    달러 기호 $와 쌍방 괄호 [모호하게 일치하는 기능이 있습니다. 명령줄에서 요소를 빠르게 찾을 수 있습니다.
    예:
    > x 1:5)
    > x$a
    [1] 1 2 3 4 5
    > x[["a"]]                 ##  
    NULL
    > x[["a", exact = FALSE]]  ##  
    [1] 1 2 3 4 5

    (5) 누락된 데이터와 누락된 값 삭제(NA)


    대부분의 실제 데이터에는 벡터, 행렬, 데이터 상자가 대량으로 부족합니다. 부족한 값이 어디에 있는지 알려줄 수 있는 논리적 벡터를 만들어서 서브집합을 만들어서 삭제합니다.is.na() 함수는 벡터에서 누락된 값을 찾을 수 있습니다. 예:
    > x 1, 2, NA, 4, NA, 5)
    > bad  print(bad)
    [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
    > x[!bad]         ## !bad 
    [1] 1 2 4 5

    여러 벡터, 여러 객체가 있는 경우 NA는 모든 부족한 값을 제거하고 새 하위 집합을 만들기 위해 다음과 같은 complete.cases() 함수를 사용할 수 있습니다.
    > x 1, 2, NA, 4, NA, 5)
    > y "a", "b", NA, "d", NA, "f")
    > good  good
    [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE
    > x[good]
    [1] 1 2 4 5
    > y[good]
    [1] "a" "b" "d" "f"

    이와 유사하게 x, y 두 벡터의 결함 값 위치가 다르면 complete.cases() 함수는 병합하여 결함 위치를 판단한다.
    > x 1, 2, NA, 4, NA, 5)
    > y "a", "b", NA, NA, "d", "f")
    > good  good
    [1]  TRUE  TRUE FALSE FALSE FALSE  TRUE
    > 
    > x[good]
    [1] 1 2 5
    > y[good]
    [1] "a" "b" "f"
    complete.cases() 함수는 데이터 상자에서 부족한 값을 제거하는 데도 사용할 수 있다
    > ##  airquality
    > Ozone 41, 36, 12, 18, NA, 28, 13, 15)
    > Solar.R 190, 118, 149, 313, NA, NA, 244, 222)
    > Wind 7.4, 8.0, 12.1, 11.2, 14.3, 13.9, 14.1, 15.2)
    > Temp 67, 72, 74, 62, 56, 66, 22, 33)
    > Month 5, 5, 5, 5, 5, 5, 5, 5)
    > Day 1, 2, 3, 4, 5, 6, 7, 8)
    > airquality data.frame(Ozone, Solar.R, Wind, Temp, Month, Day)
    > airquality
      Ozone Solar.R Wind Temp Month Day
    1    41     190  7.4   67     5   1
    2    36     118  8.0   72     5   2
    3    12     149 12.1   74     5   3
    4    18     313 11.2   62     5   4
    5    NA      NA 14.3   56     5   5
    6    28      NA 13.9   66     5   6
    7    13     244 14.1   22     5   7
    8    15     222 15.2   33     5   8
    >
    > ##  
    > head(airquality)
      Ozone Solar.R Wind Temp Month Day
    1    41     190  7.4   67     5   1
    2    36     118  8.0   72     5   2
    3    12     149 12.6   74     5   3
    4    18     313 11.5   62     5   4
    5    NA      NA 14.3   56     5   5
    6    28      NA 14.9   66     5   6
    >
    > ##  
    > good  head(airquality[good, ])
      Ozone Solar.R Wind Temp Month Day
    1    41     190  7.4   67     5   1
    2    36     118  8.0   72     5   2
    3    12     149 12.6   74     5   3
    4    18     313 11.5   62     5   4
    7    23     299  8.6   65     5   7
    8    19      99 13.8   59     5   8

    좋은 웹페이지 즐겨찾기