데이터를 분석할때는 그냥 Raw Data를 넣는것이 아닌 어느정도 가공을 한 후 데이터 분석을 진행해 주어야 한다. 여기서 가공하는 작업을 우리는 흔히 데이터 전처리(Data Processing)이라고 말한다. 데이터 전처리에는 데이터를 일부만 자르거나 데이터를 합치는 등 다양하게 가공하는 방법이 존재한다. 데이터 전처리를 위해서는 'dplyr'패키지가 이용된다. dplyr패키지는 데이터 전처리 과정에 많이 쓰이는 패키지이다. dplyr패키지 안에는 데이터 전처리를 도와주는 다양한 함수가 있다. 우선 오늘은 행을 추출하는 역할을 하는 filter() 함수에 대해 알아볼 것이다.
우선 자신이 활용할 임의의 자료를 준비해보자(.csv 파일로) 그 후 dplyr패키지 호출과 자신이 준비한 자료의 데이터 프레임 출력까지 해보자.
필자의 경우는 반별로 학생들의 점수가 저장되어 있는 자료를 가지고 진행을 하고있다.(해당 포스트는 필자가 준비한 자료를 기준으로 진행합니다) 만약 내가 filter()를 이용해서 3반의 학생들에 대한 데이터만 출력하고 싶다고 해보자. 그러면 다음과 같이 작성해 주면 된다. 또한 결과창에 3반 학생들에 대한 데이터만 출력되는것을 볼 수 있다.
코드에서 생소한 기호가 보인다. 바로 '%>%' 기호인데, 이 기호의 이름은 파이프 연산자이며, 이 기호를 쓰는 이유는 dplyr패키지에서는 저 기호를 이용해서 함수를 나열하는 방식으로 코드를 작성을 하기 때문이다. 파이프 연산자의 단축기는 Ctrl + Shift + M 이다. filter함수 안에는 위에서 필자가 '3반 학생들에 대한 데이터만' 이라고 했다. 이는 즉 반을 의미하는 변수의 값이 3인 데이터만 추출하면 되기 때문에, 반을 의미하는 변수명 class가 3인 경우, class == 3을 작성해 준것이다.
혹시라도 '=='기호를 모르는 사람을 위해 언급하자면 '='와 '=='의 차이점은 등호를 한번 쓰는 경우는 함수에 매개변수를 넣을때 혹은 데이터를 대입할 때 사용되고, 등호를 두번 쓰는 경우는 '같다'의 의미를 가지게 할때의 경우이다. 좀더 응용해 보면 '!='라는 기호도 있는데, 이 기호는 'not'의 의미, 즉 같지 않은 경우를 의미하는 기호이다. 이 기호를 이용해서 출력을 해보면
해당 예시는 test %>% filter(class != 4)라는 코드를 작성해 주었다. 이 코드를 해석해보면 test라는 데이터 프레임 안에서 class변수의 값이 4가 아닌 값들을 출력하겠다는 의미가 되는것이다.
이번에는 일정값을 초과하거나, 미만, 이상, 이하인 경우에 대해서 데이터를 가공해 보자. 가공하기 앞서 초과. 미만, 이상, 이하에 대한 기호는 순서대로 <,>,<=,>= 이 네가지로 사용이 된다.
1 . 초과 혹은 미만
2 . 이상 혹은 이하
만약 다음과 같은 전제가 있다고 하자. 1반이면서(조건1) 수학점수가 30점이 넘는 학생(조건2) 주어진 조건은 총 두개이며, 두 조건을 모두 만족해야한다. 또 다른 상황에서는 수학 점수가 50점이 넘거나(조건1) 과학 점수가 70점이 넘는 학생(조건2) 여기서도 조건은 총 두개이며, 두 조건중 하나만 만족해도 된다. 이러한 상황들처럼 주어진 조건에 맞게 끔 행을 추출해 주어야 하는 경우가 있다. 첫번째 경우에는 두 조건을 모두 만족해야 한다. 이러한 경우에는 and(그리고)를 의미하는 연산자인 '&'를 써주면 된다.(하나만 써주면 됨) 두번째 경우에는 두 조건중 '하나'만 충족시켜도 되는 상황이다. 이러한 경우에는 Or(또는)을 의미하는 연산자인 '|'를 써주면 된다.(얘도 하나만) | 기호는 \기호를 Shift와 함꼐 눌러주면 된다. 그렇다면 저 두 조건을 한번 입력해 보자.
상황 1 : 1반이면서 수학점수가 30점이 넘는 학생
상황 2 : 수학점수가 50점이 넘거나 과학 점수가 70점이 넘는 학생
상황 3 : 이 두가지를 응용하여 3반이고 수학점수가 30점이 넘는 학생 혹은 4반이고 영어점수가 70점이 넘는 학생을 추출하는 코드를 작성해 보자.
상황 4 : 1,3,5반 데이터 추출하기
상황 4번을 보자. 상황 4번은 1,3,5반 데이터를 추출하는 것이다. 그래서 class == 1 혹은 class == 3 혹은 class == 5 라는 전제로 코드를 작성해주면 되는데, 저 코드를 좀 더 간편하게 사용하는 방법이 있는데 바로 매치 연산자로 불리우는 %in%라는 기호를 이용해 주는 것이다. %in%와 c()를 이용해서 조건을 입력해 주면 되는것이다. %in%기호는 변수값이 조건 목록에 해당하는지 비교하는 기능을 해준다.
마지막으로 자신이 추출한 행을 데이터 형태로 만들어보고 해당 데이터를 분석해 보자.
'DataAnalysis > R' 카테고리의 다른 글
데이터 전처리하기(Data Processing) - select() (0) | 2019.02.23 |
---|---|
R에서 사용하는 연산자들 (0) | 2019.02.23 |
Derived Variable (0) | 2019.02.04 |
Change Variable's name (0) | 2019.02.01 |
Understanding Data - with mpg Data (0) | 2019.01.31 |