📚해당 게시글은 '이지스 퍼블리싱' 출판, 데이터 분석가 '김영우'님이 지은 도서 "Do it! 쉽게 배우는 R 데이터 분석" 을 기반으로 작성된 게시글입니다. 저작권 문제 시 게시글을 삭제 하겠습니다 :)
- R 내장 함수로 데이터 추출하기
dplyr이 내장 함수에 비해 사용하기 쉽고 처리 속도도 빠르지만, 다른 사용자들이 만든 코드를 이해하려면 R 내장 함수를 사용하는 방법을 익힐 필요가 있다.
1. 행 번호로 행 추출
데이터 프레임명 뒤에 대괄호 [ , ]를 붙여 조건을 입력하면 된다.
대괄호 안에 아무것도 입력하지 않는 경우, 전체 데이터가 출력된다.
대괄호 안의 쉼표를 기준으로 왼쪽은 행에 대한 조건, 오른쪽은 열(변수)에 대한 조건을 의미한다.
우선, 쉼표 기준 왼쪽을 채워 행을 추출했다. 숫자를 입력하면 해당하는 숫자의 행이 추출된다.숫자 대신 조건문이 들어갈 수 있다. (조건은 지금까지 배웠던 방식 그대로 입력하면 된다.)dplyr 함수는 %>%로 모든 코드가 연결되기 때문에, 데이터프레임 이름을 처음 한번만 써주면 되지만, 내장 함수는 코드가 연결되지 않아 조건문을 작성할때 마다 '변수명' 앞에 '데이터프레임명$' 을 입력해줘야한다.
2. 열 번호로 변수 추출
열 번호로 변수를 추출할 때는, 대괄호 [ , ] 내의 쉼표를 기준으로 오른쪽에 숫자나 "변수명"을 입력해주면된다.
c() 함수를 이용해 한번에 여러 변수명을 입력할 수도 있다.
3. 행, 변수 동시 추출
1번과 2번 방식을 종합해 대괄호 [ , ] 내의 쉼표 기준으로 왼쪽과 오른쪽을 모두 채워 행과 변수를 동시에 추출할 수도 있다.
4. dplyr과 내장 함수의 차이
dplyr 함수는 논리의 흐름대로 구조화되어 있어 내장 함수에 비해 가독성이 높고 이해하기 쉽다.
dplyr 패키지 함수를 이용해 compact와 suv 차종의 '도시 및 고속도로 통합 연비' 평균을 구하는 코드를 따라, R 내장 함수를 이용해 코딩을 해보았다.
R 내장 함수를 이용해 코딩을 할 때, dpylr 함수의 논리를 한 단계씩 차근차근 풀어나가주면 된다.
우선, mpg 데이터에 통합 연비 평균을 구한 total 변수를 만들어 주었다.
이후, class가 compact인 값과 suv인 값을 추출하고, compact 차종의 total과 suv 차종의 total 변수의 평균을 각각 구해 비교를 했다.
- 변수 타입
변수는 여러가지 속성이 있다. 함수에 따라 적용할 수 있는 변수 타입이 다르기 때문에 분석 전에 변수 타입을 확인해야 한다.
우선, 변수에는 연속 변수와 범주 변수가 있다.
연속 변수는 키, 몸무게, 소득처럼 연속적이고 크기를 의미하는 값으로 구성된 변수이다. 이는 'numeric'으로 표현된다.
범주 변수는 값이 대상을 분류하는 의미를 지닌 변수이다. 예를 들어, 남성은 1, 여성은 2로 표현되는 변수들이 범주 변수이다. 이는 'factor'로 표현되며, 이 변수는 연산이 불가능하다. factor 변수를 출력하면, 분류에 사용된 값들이 출력되는 'levels' 값이 추출된다.
numeric 변수를 생성할 때는 c() 함수를 이용하고, factor 변수를 생성할 때는 factor(c()) 함수를 이용한다. (값이 문자일때는 따옴표 "" 붙히기)
변수 타입을 확인할 때는 class()함수를 사용하고, 변수 타입을 변환할 때는 as.numeric(), as.factor() 등 as.~() 함수를 사용한다.
- 데이터 구조
1. 벡터 (1차원, 1가지 변수 타입으로 구성)
: 하나의 값 또는 여러개의 값으로 구성된 데이터 구조로, 여러 변수 타입을 섞을 수 없고, 한가지 타입으로만 구성 가능
2. 데이터 프레임 (2차원, 다양한 변수 타입으로 구성)
: 행과 열로 구성된 2차원 데이터 구조. data.frame()
3. 매트릭스(2차원, 한가지 변수 타입으로 구성)
: 데이터 ㅡ레임과 마찬가지로 행과 열로 구성된 2차원 데이터 구조. 하지만 한 가지 변수 타입으로만 구성 가능.
matrix(), c( : ), ncol=
4. 어레이(다차원, 2차원 이상의 매트릭스)
: 2차원 이상으로 구성된 매트릭스 구조. 하지만 매트릭스와 마찬가지로 한 가지 변수 타입으로만 구성 가능
array(), dim = c(n1,n2,n3) n1행, n2열, n3차원
5. 리스트(다차원, 서로 다른 데이터 구조 포함)
: 모든 데이터 구조를 포함하는 데이터 구조. 여러 데이터 구조를 합해 하나의 리스트로 생성
list(f1= , f2= , f3= , f4 = , ...., fn= )
리스트는 R에서 특히 중요한 데이터 구조이다. 리스트를 활용하면 함수의 결과물에서 특정 값을 추출할 수 있기 때문이다.
예를 들어, boxplot() 출력 결과는 리스트 형태이기 때문에 리스트 구조를 다루는 문법을 이용해 원하는 값을 추출 할 수 있다.
> 위의 실습은 mpg 데이터에서 cty 변수를 boxplot으로 출력한 결과이다.
이는 매트릭스 구조로 된 stats, 벡터 구조로 된 out 등 여러 형태의 데이터 구조를 포함한다.
$ 기호와 [ ] 기호를 이용하면 리스트 내부의 값을 추출할 수 있다.
실습에서는 stats를 이용해 1열 추출, 1열의 중앙값 추출, 1열의 1분위수를 추출해 보았다.
오늘부로 교재 진도가 모두 끝났다. 교재 마지막 부분에서 추천해주신 사이트, 공공데이터포털, 교수님께 받은 실습 데이터 등을 이용해 다양한 분석을 할 차례이다. 교재와 구글링을 이용해 지속적으로 더 다양한 패키지와 문법에 대해 학습 할 예정이기도 하다.
코드나 문법이 공유가 잘 되어있어 모든 것을 암기해야한다는 부담감이 없어 좋았다. 하지만 처음 접해보는 R을 교재를 통해 손에 좀 익히니 해볼만 했던 것 같다.
이제는 내 길 내가 개척할 시간...😂
'(통계분석) R' 카테고리의 다른 글
10.13(화) 통계분석 기법을 이용한 가설 검정 (0) | 2020.10.13 |
---|---|
10.12(월) 인터랙티브 그래프 (0) | 2020.10.12 |
10.10(토) 지도의 시각화 (0) | 2020.10.11 |
10.09(금) 텍스트 마이닝 (0) | 2020.10.09 |
10.06(화) 성별 직업 빈도, 종교 유무에 따른 이혼율, 지역별 연령대 비율 (0) | 2020.10.06 |