본문 바로가기
프로그래밍 언어/R

R 13. 기타

by Jinger 2024. 2. 2.

서론

    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 Markdown

© Copyright 2016 - 2020 RStudio, PBC

rmarkdown.rstudio.com

 

반응형

'프로그래밍 언어 > 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

댓글