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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
언어 - Chord diagram 그리기이 팁에서는 데이터 간의 상관 관계를 시각화하는 방법 중 하나 인 Chord diagram을 그리는 방법을 소개합니다. 그리려면 "chorddiag"패키지를 사용합니다. 다음 데이터를 파일 이름 "yamate-lin...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.