서론
R에 대한 이해를 더 높이고자 개념에 대해 깊이 알아보자.
내장 함수
dplyr을 많이 사용하지만 기본적인 문법을 알아야 다른 사람의 코드를 이해할 수 있다.
# 데이터 불러오기
exam <- read.csv("csv_exam.csv")
exam[] # 전체 데이터 출력
## 결과 생략
exam[1, ] # 1행 추출
## 결과 생략
exam[,1] # 1번째 열 추출
## 결과 생략
exam[exam$class == 1,] # class가 1인 행 추출
## 결과 생략
exam[exam$class == 1 & exam$math >= 50] # 1반이면서 수학 점수가 50이상
## 결과 생략
exam[, "class"] # class 변수 추출
## 결과 생략
exam[, c("class", "math", "english")] # class, math, english 변수 추출
## 결과 생략
exam[1,3] # 행 인덱스, 열 인덱스에 있는 값
## 결과 생략
exam[5, "english"] # 행 인덱스, 열 변수명에 있는 값
## 결과 생략
exam[exam$math >= 50, "english"] # 행 조건, 열 변수명에 있는 값들
## 결과 생략
exam[exam$math >= 50, c("english", "science")] # 행 조건, 열 변수명에 있는 값들
## 결과 생략
dplyr과 내장 함수 비교해 보자. 수학 50점 이상, 영어 점수 80점 이상 학생들을 대상으로 각 반의 전 과목 총평균 구하기.
# 내장 함수
exam$tot <- (exam$math + exam$english + exam$science)/3
aggregate(data=exam[exam$math >= 50 & exam$english >= 80,], tot~class, mean)
# aggregate()는 범주별 요약 통계량을 구하는 R 내장함수이다.
# dplyr
library(dplyr)
exam %>%
filter(math >= 50 & english >= 80) %>%
mutate(tot = (math + english + science)/3) %>%
group_by(class) %>%
summarise(mean = mean(tot))
변수 타입
변수에는 여러 가지 타입(type, 속성)이 있다. 함수에 다라 적용할 수 있는 변수 타입이 다르기 때문에 분석을 하기 전에 변수 타입이 무엇인지 확인해야 한다. 함수를 실행했을 때 오류가 발생하거나 예상과 다른 결과가 출력되면 변수 타입을 확인하고 함수에 맞게 변경해야 한다.
변수 종류
변수는 연속 변수(Numeric)와 범주 변수(Factor)로 분류할 수 있다. 변수의 값이 똑같이 숫자로 되어 있더라도 변수 종류가 무엇인지에 따라 사용할 수 있는 분석 방법이 다르다.
변수 | Data Type | 예 |
연속 변수 | Numeric | 키, 몸무게 |
범주 변수 | Factor | 성별, 지역 |
'class()' 함수를 통해서 변수 타입을 확인할 수 있다. 두 변수의 큰 차이점은 범주 변수는 연산을 할 수 없다는 점이다. 또한 'level()'함수를 통해 어떤 범주로 구성되어 있는지 확인할 수도 있다.
변수 타입 바꾸기
'as.데이터타입()'을 통해 변수의 타입을 바꿀 수 있다. 이를 변환 함수(Coercion Function)라고 한다.
함수 | 기능 |
as.numeric() | numeric 으로 변환 |
as.factor() | factor 으로 변환 |
as.character() | character 으로 변환 |
as.Date() | Date 으로 변환 |
as.data.frame | Date Frame 으로 변환 |
Date Type | 의미 | 값 |
numeric | 실수 | 1, 12.3 |
integer | 정수 | 1, 23 |
complex | 복소수 | 3 + 2i |
character | 문자 | "male", "123" |
logical | 논리 | TRUE, FALSE, T, F |
factor | 범주 | 1, 2, a, b |
Date | 날짜 | "2024-02-03", "03/02/24" |
데이터 구조
데이터 프레임 외에도 다양한 데이터 구조가 있고, 데이터 구조에 따라 활용 방법에 차이가 있다. 각 데이터 구조의 특징을 알아보자.
데이터 구조 | 차원 | 특징 |
벡터(Vactor) | 1차원 | 한 가지 변수 타입으로 구성 |
데이터 프레임(Data Frame) | 2차원 | 다양한 변수 타입으로 구성 |
메트릭스(Matrix) | 2차원 | 한 가지 변수 타입으로 구성 |
배열(Array) | 다차원 | 2차원 이상의 매트릭스 |
리스트(List) | 다차원 | 서로 다른 데이터 구조 포함 |
# 벡터
a <- 1
b <- "hello"
# 데이터 프레임
x1 <- data.frame(var1 = c(1, 2, 3), var2 = c("a", "b", "c"))
# 메트릭스
x2 <- matrix(c(1:12), ncol = 2)
# 배열
x3 <- array(1:20, dim = c(2, 5, 2))
# 리스트
x4 <- list(f1 = a, f2 = x1, f3 = x2, f4 = x3)
마크다운
데이터 분석 결과를 잘 전달하려면 코드와 결과물이 설명 글과 함께 어우러진 데이터 분석 보고서를 작성해야 한다. 그래야만 독자가 분석 과정을 명확히 이해할 수 있고, 직접 코드를 실행하면서 동일한 결과가 도출되는지 확인하거나 자신의 분석 작업에 활용할 수 있다.
R 마크다운(R Markdown)을 활용하면 데이터 분석의 전 과정을 담은 보고서를 쉽게 만들 수 있다. 다양한 포맷으로 저장할 수 있기 때문에 별되의 문서 작성 소프트웨어를 사용하지 않고도 데이터 분석 보고서를 만들 수 있다.
문서 만들기
'File > New File > R Markdown...'로 들어가면 마크다운 문서 생성 창이 열린다. 저장할 포맷을 정하고 'OK'를 클릭하면 마크다운 문법으로 작성된 예제 문서가 만들어진다. 마크다운 창 메뉴에서 뜨개질 모양 버튼을 클릭하면 R 마크다운 문서 파일을 저장하는 창이 열린다. 파일명을 입력하고 저장하면 마크다운 문서가 HTML 포맷으로 변환되고, 새창이 열린다. Rmd 파일과 변환된 HTRL 파일은 프로젝트 폴더에 저장된다. 또한 뜨개질 모양 버튼 옆 화살표 버튼을 클릭하면 HTML파일 말고도 다른 파일로 변환할 수 있다.
마크다운 문법은 대체로 비슷하다. 만약 마크다운을 모른다면 아래 R 마크다운 공식 사이트를 참고 바란다.
주섬주섬
- 아래는 정리이다.
## 1.데이터 추출하기
exam[1,] # 행 번호로 행 추출
exam[exam$class == 1, ] # 조건을 충족하는 행 추출
exam[exam$class == 1, exam$math >= 50] # 여러 조건을 충족하는 행 추출
exam[,1] # 열 번호로 변수 추출
exam[,"class"] # 변수명으로 변수 추출
exam[,c("class", "math", "english")] # 변수명으로 여러 변수 추출
exam[1,3] # 행, 변수 동시 추출 - 인덱스
exam[exam$math>=50, "english"] # 행, 변수 동시 추출 - 조건문, 변수명
## 2.변수 타입
var <- c(1,2,3,1,2) # numeric 변수 만들기
var <- factor(c(1,2,3,1,2)) # factor 변수 만들기
var <- factor(c("a", "b", "b", "c")) # 문자로 구성된 factor 변수 만들기
class(var) # 변수 타입 확인하기
levels(var) # factor 변수의 구성 범주 확인
var <- as.numeric(var) # factor 타입을 numeric 타입으로 변환하기
## 3.데이터 구조
a <- 1 # 벡터
b <- "hello"
x1 <- data.frame(var1 = c(1, 2, 3), var2 = c("a", "b", "c")) # 데이터 프레임
x2 <- matrix(c(1:12), ncol = 2) # 메트릭스
x3 <- array(1:20, dim = c(2, 5, 2)) # 배열
x4 <- list(f1 = a, f2 = x1, f3 = x2, f4 = x3) # 리스트
# 리스트 활용하기
x <- boxplot(mpg$cty) # 상자 그림 만들기
x$stats[,1] # 요약 통계량 추출
참고
'프로그래밍 언어 > R' 카테고리의 다른 글
R 초보자 꿀팁 (0) | 2024.02.02 |
---|---|
R 12. 통계적 가설 검정 (0) | 2024.02.02 |
R 11. 인터랙티브 그래프 (0) | 2024.02.02 |
R 10. 지도 시각화 (0) | 2024.02.02 |
R 9. 텍스트 마이닝 (0) | 2024.02.02 |
댓글