데이터 가공하기, 구조 변형, 정제 [혼자 공부하는 R 데이터 분석 4주차]

김서윤·2025년 8월 5일
0
post-thumbnail

dplyr 패키지

dplyr 패키지 = 해들리 위컴이 만든 데이터 처리 패키지

dplyr 패키지 설치 및 로드하기

install.packages("dplyr")
library(dplyr)

데이터 추출 및 정렬하기

행 추출하기 : filter()함수

조건에 맞는 데이터를 필터링하는 함수

  • &연산자
    더 많은 조건을 지정할 수 있음
filter(데이터, 조건문)

열 추출하기 : select()함수

열, 즉 지정한 변수만 추출할 때 사용

select(데이터, 변수명1, 변수명2, ....)

정렬하기 : arrange()함수

데이터를 오름차순으로 정렬할 때 사용

  • desc()함수
    내림차순으로 정렬
arrange(데이터, 변수명1, 변수명2, ...)
arrange(데이터, 변수명1, 변수명2, ..., desc(변수명))

[ 오름차순 정렬 기준 ]

  • 숫자형 변수 : MISSING(결측치), 음수, 0, 양수
  • 문자형 변수 : 빈칸부터 모든 문자

데이터 추가 및 중복 데이터 제거하기

열 추가하기 : mutate()함수

데이터 세트에 열을 추가할 때 사용

mutate(데이터, 추가할 변수 이름 = 조건1, ...)

중복 값 제거하기 : distinct()함수

중복 값 제거하는 함수

distinct(데이터, 변수명)

데이터 요약 및 샘플 추출하기

데이터 전체 요약하기 : summarise()함수

기술통계 함수와 함께 사용하여 데이터 요약을 확인할 때 사용

summarise(데이터, 요약할 변수명 = 기술통계 함수)
summarise(데이터, 기술통계 함수)

*summarise()함수 = summarize()

그룹별로 요약하기 : group_by()함수

그룹별로 데이터를 요약할 때 사용

group_by(데이터, 변수명)

데이터를 지정한 조건에 따라 그룹으로 묶는 역할을 하므로 단독으로 쓰기보다는 주로 다른 함수와 함께 사용하는 경우가 많음

n()함수 = 데이터 개수를 구함 
n_distinct()함수 = 특정 열의 중복 값을 제외하고 개수를 파악 

샘플 추출하기 : sample_n(), sample_frac()함수

smaple_n(데이터, 샘플 추출할 개수) = 전체 데이터에서 샘플 데이터를 개수 기준으로 추출 
smaple_frac(데이터, 샘플 추출할 비율) = 전체 데이터에서 샘플 데이터를 비율 기준으로 추출

파이프 연산자: %>%

파이프 연산자는 이름 그대로 파이프, 연결하여 연산하는 연산자

데이터 세트 %>% 조건 또는 계산 %>% 데이터 세트

함수를 연달아 사용할 때 함수 결괏값을 변수로 저장하는 과정을 거치지 않아도 됨



데이터 가공하기

필요한 데이터 추출하기

  1. 사용할 변수를 선택하는 방식
  2. 원하는 조건 값에 맞는 데이터를 추출하는 방식

선택한 변수만 추출하기

select()함수 = 데이터 세트에 있는 변수 중 필요한 변수만을 추출

*변수명 앞에 간단하게 마이너스기호만 사용하면 해당 변수가 제외된 상태로 데이터 세트가 출력됨

필요한 데이터만 추출하기

filter()함수
조건문은 == 연산자를 사용하여 조건문 작성
2가지 조건은 & 연산자


데이터 정렬하기

arrange()함수 : 변수를 크기순으로 정렬하여 새로운 데이터를 만들거나 조회할 때
내림차순 desc()함수

중첩 정렬하기

중첩 정렬 = 변수 하나만 정렬하는 것이 아니라 여러 변수를 기준으로 중첩하여 정렬할 수 있음
정렬 기준으로 삼을 변수를 간단하게 쉼표로 나열하여 작성


데이터 요약하기

  • summarise()함수
  • group_by()함수

데이터 결합하기

2개 이상의 테이블을 결합하여 하나의 테이블로 만드는 과정

[ 결합 방식 ]

  • 세로 결합
  • 가로 결합

세로 결합

결합할 테이블에 있는 변수명을 기준으로 결합
각 테이블에 서로 다른 변수도 결합하는 테이블에 추가

bind_rows(테이블명, 테이블명)

가로 결합

세로 결합 방식에 비해 조금 복잡
가로 결합 방식 함수는 테이블 결합 기준이 되는 by = '변수명'에 사용할 변수가 필요
이러한 변수는 키변수 = 결합할 각 테이블에 있어야 하며 한쪽이라도 키 변수가 없으면 실행되지 않음

left_join()함수 : 지정한 변수와 테이블1을 기준으로 테이블2에 있는 나머지 변수들을 결합 
inner_join()함수 : 테이블1과 테이블2에서 기준으로 지정한 변수 값이 동일할 때만 결합 
full_join()함수 : 테이블1과 테이블2에서 기준으로 지정한 변수 값 전체를 결합 



데이터 구조 변형하기

데이터 재구조화 : 동일한 데이터가 있더라도 목적에 따라 분석 기준이 달라지며, 그에 따라 데이터 구조를 변형해야 할 때가 있음

넓은 모양 데이터를 긴 모양으로 바꾸기 : melt()함수

넓은 모양 데이터는 행보다 열이 많아 가로로 긴 모양의 행렬
행렬의 열을 행으로 바꾸어 세로로 길게 바꿀 때는 melt()함수 사용

melt() 함수 옵션 사용법
R스튜디오 Help 탭에서 [melt]를 입력하여 검색한 후 결과 목록에서 [reshape2::melt]를 클릭

  • data : 변형할 데이터 세트를 입력
  • na.rm = FALSE : 결측치를 제외하는 옵션
    결측치를 포함하려면 na.rm = TRUE
  • value.name = "value" : 행으로 바꾸고 싶은 열 이름
melt(데이터, id.var = "기준 열", measure.vars = "변환 열")

긴 모양 데이터를 넓은 모양으로 바꾸기 : cast()함수

행을 열로 바꾸는 함수로 melt()함수보다 복잡

cast() 함수 옵션 사용법
R스튜디오 Help 탭에서 [cast]를 입력하여 검색한 후 결과 목록에서 [reshape2::cast]를 클릭

  • acast() : 데이터를 변형하여 벡터, 행렬, 배열 형태로 반환
  • dcast() : 데이터를 변형하여 데이터 프레임 형태로 반환
acast(데이터, 기준 열 ~ 반환 열 ~ 분리 기준 열)
dcast(데이터, 기준 열 ~ 반환 열)



데이터 정제하기

결측치 확인하기

결측치 = 결측값 : 데이터가 없는 것을 의미 / NA or NULL로 표현

is.na(변수명) : 결측치를 확인하여 결괏값을 TRUE와 FALSE로 반환
table(is.na(변수명)) : 결측치 빈도 

결측치 제외하기

데이터에 결측치가 있다면 연산을 해도 결과가 NA로 나옴
결측치 제외하는 방법 na.rm = T 옵션 사용

결측치 개수 확인하기

sum(is.na(변수명)) : 데이터 세트에 결측치가 총 몇 개인지 확인 
colSums(is.na(변수명)) : 각 컬럼의 결측치 개수를 확인 

결측치 제거하기

na.omit()함수로 결측치 제거

na.omit(변수명)

결측치 대체하기

결측치는 제거할 수도 있지만, 다른 값으로 대체할 수 있음

변수명[is.na(변수명)] <- 대체할 값 

이상치 확인하기

이상치 = 극단치 : 데이터에서 정상적인 범주를 벗어난 값
boxplot = 데이터 분포에서 심하게 벗어난 이상치를 판단할 때 사용하는 그래프

boxplot(변수명)$stats

이상치 처리하기

이상치는 분석 결과를 왜곡하기 때문에 정제 과정이 필요

ifelse(조건문, 조건이 참일 때 실행, 조건이 거짓일 때 실행)

이상치가 있을 때는 해당 값을 결측치로, 그렇지 않을 경우에는 원래의 값이 반환되도록 코드를 작성할 수 있음

profile
데이터 분석 취업 준비중

0개의 댓글