R의 데이터프레임, tibble 등의 자료형에서 원하는 위치 혹은 조건을 만족하는 행 / 열만을
가져오는 방법들을 총정리해보도록 하겠습니다.
우선, 아래와 같은 데이터가 df라는 변수에 저장되어 있다고 가정해보고
해당 데이터에서 행 및 열 추출을 여러 가지 방법으로 진행해보도록 하겠습니다.
참고 : 아래 설명에 df로 등장하는 부분들에 데이터가 저장된 변수 이름을 대입하시면 됩니다.
R 위치 기준 행 / 열 추출
행 1개 가져오기
df[위치 번호, ] 형태(쉼표 필수)로 해당 위치의 행 1개만을 추출해낼 수 있습니다.
첫 번째 행을 가져오는 예시 코드 및 결과는 다음과 같습니다.
> df[1,]
# A tibble: 1 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
행 여러 개 가져오기
여러 개의 행들을 동시에 뽑아오고 싶다면 df[위치 인덱스 벡터, ] 형태(마찬가지로 콤마 필수)
로 지정하여 원하는 위치의 행들만을 골라서 추출해낼 수 있습니다.
> df[c(1, 3), ] # 1번째와 3번째 행 추출
# A tibble: 2 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
2 CCC 95 80 80
> df[c(1:3), ] # 1~3번째 행 추출
# A tibble: 3 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
2 BBB 90 75 85
3 CCC 95 80 80
컬럼 1개 가져오기
열 이름 기준 추출 방법과 위치가 몇 번째 인지를 기준으로 가져오는 방법 모두 가능합니다.
먼저, 컬럼명을 기준으로 가져오는 방법은 df[열 이름] 형태로 지정해주시면 완료됩니다.
> df["국어"]
# A tibble: 4 × 1
국어
<dbl>
1 80
2 90
3 95
4 85
반면, 컬럼 위치 기준으로 추출하려면 df[열 위치 번호] 형태로 코드를 작성하시면 됩니다.
(행 추출에서 쉼표가 없는 형태와 동일합니다.)
> df[3] # 순서상으로 3번째인 수학 열 추출
# A tibble: 4 × 1
수학
<dbl>
1 90
2 75
3 80
4 95
컬럼 여러 개 가져오기
여기서도 마찬가지로 이름 기준, 위치 기준 추출이 모두 가능한데,
df[열 이름 벡터 or 열 위치 인덱스 벡터] 형태로 코드를 작성해주시면 됩니다.
> df[c("이름", "국어")]
# A tibble: 4 × 2
이름 국어
<chr> <dbl>
1 AAA 80
2 BBB 90
3 CCC 95
4 DDD 85
> df[c(2:4)]
# A tibble: 4 × 3
국어 수학 영어
<dbl> <dbl> <dbl>
1 80 90 100
2 90 75 85
3 95 80 80
4 85 95 90
행 / 열 위치 동시 지정 추출
행 추출과 열 추출 방법을 조합하여 동시에 위치를 지정하여 추출하는 것도 가능합니다.
df[행 위치 조건, 열 위치 조건] 순서의 형태로 콤마를 기준으로 행 / 열 위치에 대한 정보를
구분해주시면 두 가지 위치를 모두 고려한 추출이 가능합니다.
> df[c(1, 2, 4), c(1, 4)] # 1, 2, 4번째 행들의 1, 4번째 열 추출
# A tibble: 3 × 2
이름 영어
<chr> <dbl>
1 AAA 100
2 BBB 85
3 DDD 90
> df[c(2:4), c("이름", "수학")] # 2~4번째 행들의 이름, 수학 열 추출
# A tibble: 3 × 2
이름 수학
<chr> <dbl>
1 BBB 75
2 CCC 80
3 DDD 95
R 조건 기준 행 / 열 추출
조건이 1개인 경우
특정 열의 값이 주어진 조건을 만족하는 행들만 추출하고 싶은 경우
df[조건, ] 형태(쉼표 필수)로 작성해주시면 됩니다.
이름이 AAA인 열과 수학이 80 초과인 열을 각각 추출하는 예시는 아래와 같습니다.
> df[df$"이름" == "AAA", ]
# A tibble: 1 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
> df[df$"수학" > 80, ]
# A tibble: 2 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
2 DDD 85 95 90
콤마 뒤에 열 위치/이름 조건을 같이 제시하여 행과 열에 대한 동시 필터링도 가능합니다.
수학 80 초과인 행들 중 이름과 수학 컬럼들만 가져오는 예시는 다음과 같습니다.
> df[df$"수학" > 80, c("이름", "수학")]
# A tibble: 2 × 2
이름 수학
<chr> <dbl>
1 AAA 90
2 DDD 95
조건이 여러 개인 경우
만족시키려는 조건이 두 개 이상인 경우에는 모두 만족해야하는 and 조건일 때는 &로,
이들 중 하나만 만족해도 되는 or 조건일 때는 |(엔터 키 상단에 위치)로 조건들을
구분해주시면 됩니다.
이 외의 사용법은 조건이 1개인 경우와 동일합니다. 복합 조건 필터링 예시는 다음과 같습니다.
# 수학과 영어 모두 90 이상인 행들 추출
> df[df$"수학" >= 90 & df$영어 >= 90, ]
# A tibble: 2 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
2 DDD 85 95 90
# 수학과 영어 모두 90 이상인 행들의 이름 열 추출
> df[df$"수학" >= 90 & df$영어 >= 90, "이름"]
# A tibble: 2 × 1
이름
<chr>
1 AAA
2 DDD
# 영어가 100이거나 국어가 90 초과인 행들 추출
> df[df$영어 == 100 | df$국어 > 90, ]
# A tibble: 2 × 4
이름 국어 수학 영어
<chr> <dbl> <dbl> <dbl>
1 AAA 80 90 100
2 CCC 95 80 80
# 위 조건에서 국어, 영어 열만 추출
> df[df$영어 == 100 | df$국어 > 90, c("국어", "영어")]
# A tibble: 2 × 2
국어 영어
<dbl> <dbl>
1 80 100
2 95 80
'R' 카테고리의 다른 글
[R] 행 이름(인덱스) 지정, 초기화 방법 (0) | 2022.09.06 |
---|---|
[R] 열 이름 추출 / 변경(전체 컬럼 동시에, 특정 컬럼만) (0) | 2022.09.05 |
R 설치 및 R Studio 설치 방법 과정 요약(윈도우 기준) (0) | 2022.09.01 |