데이터 분석/R 데이터 처리 & 분석

[R데이터분석] dplyr 패키지를 활용한 데이터전처리(1)

love R 2020. 1. 29. 02:06
반응형

dplyr 패키지는 데이터전처리에 유용한 함수들이 많습니다.  대표적으로 쓰이는 함수는 select, filter, group_by, summarise, arrange 와 같은 함수들이 있습니다. dplyr에 쓰이는 함수들은 이름만 보아도 그 쓰임새를 추측할 수 있습니다. dplyr 패키지의 R문서에는 다음과 같은 목표로 제작되었다고 합니다.

 

 

오늘은 먼저  select와 filter 함수 내용을 정리하겠습니다.

예제를 통해 test1 이라는 데이터를 생성하여 활용 방법을 알아봅시다.

 

test1 <- data.frame(프랜차이즈명=rep(c('A','B','C'),each=3),

                          종류=rep(c('불고기버거','치즈버거','치킨버거'),times=3),

                          가격=c(3000,4000,4500,3500,2500,4000,5000,2000,3000))

 

 

 

첫번째로 select 함수는 변수를 선택할 때 씁니다.

기본형태: select(데이터명, 변수1, 변수2, 변수3, ...)

프렌차이즈명과 종류 항목만 선택하고 싶을 때 다음과 같이 쓸 수 있습니다.

 

 

 

하지만 프렌차이즈명만 선택하고 싶을 때는  하나의 변수명만 씁니다.

 

이번엔 filter 함수를 통해서 조건에 만족하는 데이터를 추출해보겠습니다.

filter함수는 filter( 데이터셋명, 조건식) 을 통해서 사용할 수 있습니다.

 

1. 가격이 4000원 이상인 데이터를 추

 

filter함수의 조건식에 가격>=4000 입력

 

 

2. 가격이 3000원 이하인 데이터를 추출

 

filter함수의 조건식에 가격<=3000 입력

 

3. 가격이 3000원인 데이터를 추출

filter함수의 조건식에 가격==3000 입력

R에서는 정확히 3000원인 데이터를 추출하기 위해서는 "=" 가 한 개가 아니라 "=="  이렇게 두 개를 적어야 합니다.

 

 

 

4. 가격이 4000원 이상 또는 2000원 이하인 데이터 추출

 

R에서 "또는(OR)" 이라는 논리연산을 하기 위해서 | 를 이용합니다. | 는 Shift키와 \키에 있는 수직선입니다.

이 명령어는 두 가지 조건식 중에 하나만 만족해도 데이터를 반환하려고 할 때 쓸 수 있습니다.

 

 

 

5. 가격이 4000원 이상이고 종류가 치즈버거인 데이터 추출

 

 

"그리고(AND)" 는 & 를 이용합니다.

이 명령어는 두 가지 조건식이 모두 만족해야 데이터를 반환합니다.

따라서 가격이 4000원 이상임과 동시에 치즈버거인 데이터를 추출합니다.

 

 

 

6. 가격이 4000원 이상이고 프랜차이즈명이 A 또는 B인 데이터 추출

 

 

이제 상황이 살짝 복잡해졌습니다. 그리고(&)와 또는(|) 연산자를 동시에 이용하여 조건식을 나타냅니다. 조건식1은 가격이 4000원 이상, 조건식2는 프랜차이즈명이 A 또는 B인 경우입니다.

 

간단하게 표현하면 filter(test1, 조건식1&조건식2) 입니다. 여기서 조건식2에 프랜차이즈명이 A 또는 B 둘 중에 하나만 만족해도 되는 | 연산자를 사용합니다. 따라서 위와 같이 표현할 수 있습니다.

 

 

7.  %in% 논리연산자를 활용한 데이터 추출

위에서 프랜차이즈명이 A 또는 B인 경우 | 연산자를 사용하면 된다고 했지만 범주가 많아지면 코드가 너무 길어질 수 있습니다. 이 때 편리하게 사용할 수 있는 연산자가 %in% 연산자입니다. 다음은 %in% 연산자의 사용법입니다.

 

 

 

 

 

프랜차이즈명 %in% c("A","B") 를 이용하면 6번과 같은 형태의 데이터셋이 추출됩니다. 

 

 

이번 포스팅에서는 dplyr 패키지의 select 와 filter 함수의 사용법에 대해 알아보았습니다.

다음번에는 group_by, summarise, mutate, arrange 함수 포스팅하도록 하겠습니다.

궁금한 점은 댓글로 남겨주세요.

 

반응형