R에서 데이터를 다룰 때, R 데이터 프레임은 중심적인 역할을 합니다. 이번 포스트에서는 R 데이터 프레임 전처리 방법들에 대해 알아보겠습니다. 데이터 프레임 인덱싱에서부터 필터링, 각 열을 삭제, 추가, 그리고 변경하는 법까지 쫘악 한번 살펴보시죠!
R 데이터 프레임 인덱싱
R 데이터 프레임의 원소에 접근하는 인덱싱 방법에 대하여 배워봅시다. 데이터 프레임에 접근하는 방법은 크게 2가지 방법이 있습니다.
- 달러 ( 연산자를 사용하여 열 접근하기
midterm
>> [1] 38 42 53 48 46 51 48 43 28 38 50 29 27 36 29 34 35 >> [18] 46 39 9 76 15 63 28 49 42 24 52 65 52
mydatamidterm <= 15,]
>> # A tibble: 2 × 4 >> student_id gender midterm final >> <dbl> <chr> <dbl> <dbl> >> 1 20 M 9 33 >> 2 22 M 15 12
R 데이터 프레임 공백 제거하기
만약 데이터 프레임의 행렬이 다음과 같이 빈 칸 (공백)이 삽입되어 있다고 생각해봅시다.
mydata[1, 2] <- NA mydata[5, 1] <- NA head(mydata)
>> # A tibble: 6 × 4 >> student_id gender midterm final >> <dbl> <chr> <dbl> <dbl> >> 1 1 <NA> 38 46 >> 2 2 M 42 67 >> 3 3 F 53 56 >> 4 4 M 48 54 >> 5 NA M 46 39 >> 6 6 M 51 74
is.na()
함수로 빈칸이 들어있는 부분을 열 별로 체크할 수 있습니다.sum(is.na(mydatastudent_id))
>> [1] 1
하지만, 빈 칸이 포함된 행을 체크하려면
complete.cases()
함수를 사용해야 합니다.complete.cases()
함수는 모든 열이 꽉 채워져 있는 완전한 행들 만을TRUE
로 반환합니다.- 공백(
NA
)가 제거된 꽉 찬 데이터 프레임 얻어내기
complete_row <- complete.cases(mydata) sum(complete_row) # 완전한 행의 수
>> [1] 28
mydata[complete_row,]
>> # A tibble: 28 × 4 >> student_id gender midterm final >> <dbl> <chr> <dbl> <dbl> >> 1 2 M 42 67 >> 2 3 F 53 56 >> 3 4 M 48 54 >> 4 6 M 51 74 >> 5 7 M 48 36 >> 6 8 M 43 58 >> 7 9 M 28 25 >> 8 10 M 38 59 >> 9 11 F 50 40 >> 10 12 F 29 44 >> # ℹ 18 more rows
R 데이터 프레임 삭제/추가/변경
R 데이터 프레임 열 추가하기
total <- mydatafinal mydata[1:3, 4:5]
>> # A tibble: 3 × 2 >> final total >> <dbl> <dbl> >> 1 46 84 >> 2 67 109 >> 3 56 109
R 데이터 프레임 합치기
cbind()
함수를 사용하여 새로운 열을 추가할 수도 있습니다. 예를 들어,mydata
데이터 프레임에total
열의 값의 절반을 나타내는average
열을 추가하고, 결과를 확인하려면 아래와 같이 코드를 작성합니다. 즉, cbind() 함수는 안에 입력 된 두 데이터 프레임을 합쳐주는 역할을 합니다.mydata_cbind <- cbind(mydata, mydatatotal/2 >> 1 1 <NA> 38 46 84 42.0 >> 2 2 M 42 67 109 54.5 >> 3 3 F 53 56 109 54.5 >> 4 4 M 48 54 102 51.0 >> 5 NA M 46 39 85 42.5 >> 6 6 M 51 74 125 62.5
하지만
cbind()
를 사용하면 결과가 데이터 프레임으로 변환되는 것을 알 수 있습니다.R tidyverse bind_cols() 함수와 bind_rows() 함수
tidyverse에서는
cbind()
,rbind()
함수와 동일한 기능을 하는bind_cols()
,bind_rows()
함수를 제공합니다.- 두 행렬을 열 방향으로 합치고 싶은 경우:
bind_cols()
- 두 행렬을 행 방향으로 합치고 싶은 경우:
bind_rows()
mydata <- bind_cols(mydata, mydatagender <- NULL head(mydata)
>> # A tibble: 6 × 5 >> student_id midterm final total average >> <dbl> <dbl> <dbl> <dbl> <dbl> >> 1 1 38 46 84 42 >> 2 2 42 67 109 54.5 >> 3 3 53 56 109 54.5 >> 4 4 48 54 102 51 >> 5 NA 46 39 85 42.5 >> 6 6 51 74 125 62.5
본 포스팅은 R 프로그래밍 기초 공략.zip 교재의 일부분 입니다. 본 교재는 R을 독학하시는 분들을 위하여 특별히 제작된 교재입니다. R을 이제 막 시작하셨다면 슬기로운 통계생활과 같이 공부해보세요!
- 공백(