Hayden's Archive
[R] R Gui 통계 관련 코드 및 시각화 본문
R Gui에 관한 간단한 설명 : https://www.youtube.com/watch?v=pGhjRJ9le7g
방통대 데이터정보처리입문 강의를 들으면서 R을 다운받고 간단한 코드를 작성하였다. R 프로그래밍에서 주로 사용되는 IDE는 R Studio지만 R을 설치하면서 기본적으로 설치되는 RGui를 먼저 사용해보았다.
R만 공부할 당시에는 잘 몰랐는데 파이썬을 공부하고 R을 다시 보니까 데이터 분석을 할 때 왜 파이썬을 사용하는지 너무도 잘 알겠다. 데이터 분석에서 R도 많이 쓰지만 파이썬은 라이브러리가 R과 비교할 수 없을만큼 매우 강력하다. 파이썬에 비하면 R이 비교적 쉽게 느껴지지만 그러기엔 파이썬의 장점이 너무도 뚜렷하다.
여하튼 R을 간단하게 공부했었는데 그 때의 코드를 포스팅한다. 현재 1학기는 종강되었고, 아래의 코드들은 과제로 제출했던 코드들이다.
Chapter 1. 단일 데이터의 통계
점수가 담긴 텍스트 파일 score.txt 의 내용은 다음과 같다.
score.txt |
54 57 55 23 51 64 90 51 52 43 15 10 82 74 54 78 37 73 52 48 41 33 52 30 41 51 18 39 46 28 53 44 46 56 28 58 29 58 67 35 25 38 61 53 23 73 69 47 41 45 77 56 89 28 54 99 10 43 35 24 21 23 67 14 53 |
텍스트 파일을 읽어들이고, 평균/중앙값/표본분산/표본표준편차/변동계수 구하기
줄기-잎 그림
히스토그램
상자그림
사분위수
Chapter 2. 복합 데이터의 통계
먼저 엑셀 파일을 불러온다.
library(xlsx)
record.xlsx = read.xlsx("C:/data/record.xlsx", 1)
head(record.xlsx)
attach(record.xlsx)
names(record.xlsx)
주요 통계 요약(최솟값, 제1사분위수, 중앙값, 평균, 제3사분위수, 최댓값)과 표준편차, 합, 사분위수 구하기
# 성별 신장 - 최솟값, 제1사분위수, 중앙값, 평균, 제3사분위수, 최댓값
summaryofHeightbySex = tapply(height, sex, summary)
rownames(summaryofHeightbySex) = c("남", "여")
summaryofHeightbySex
# 성별 신장 - 표준편차
sdofHeightbySex = tapply(height, sex, sd)
rownames(sdofHeightbySex) = c("남", "여")
sdofHeightbySex
# 성별 신장 - 합
sumofHeightbySex = tapply(height, sex, sum)
rownames(sumofHeightbySex) = c("남", "여")
sumofHeightbySex
# 성별 신장 - 사분위수
quantileofHeightbySex = tapply(height, sex, quantile)
rownames(quantileofHeightbySex) = c("남", "여")
quantileofHeightbySex
줄기-잎 그림
# 다리길이 줄기-잎 그림(여성)
recordf<-subset(record.xlsx, record.xlsx$sex==2)
stem(recordf$length)
# 50m 달리기 줄기-잎 그림(여성)
recordf<-subset(record.xlsx, record.xlsx$sex==2)
stem(recordf$run)
성별 히스토그램 모아보기
# 성별 신장, 체중, 다리길이, 50m 달리기 - 히스토그램
par(mfrow=c(2, 4))
recordm<-subset(record.xlsx, record.xlsx$sex==1)
hist(recordm$height, col="BLUE", main="신장 히스토그램(남성)")
recordm<-subset(record.xlsx, record.xlsx$sex==1)
hist(recordm$weight, col="BLUE", main="체중 히스토그램(남성)")
recordm<-subset(record.xlsx, record.xlsx$sex==1)
hist(recordm$length, col="BLUE", main="다리길이 히스토그램(남성)")
recordm<-subset(record.xlsx, record.xlsx$sex==1)
hist(recordm$run, col="BLUE", main="50m 달리기 히스토그램(남성)")
recordf<-subset(record.xlsx, record.xlsx$sex==2)
hist(recordf$height, col="RED", main="신장 히스토그램(여성)")
recordf<-subset(record.xlsx, record.xlsx$sex==2)
hist(recordf$weight, col="RED", main="체중 히스토그램(여성)")
recordf<-subset(record.xlsx, record.xlsx$sex==2)
hist(recordf$length, col="RED", main="다리길이 히스토그램(여성)")
recordf<-subset(record.xlsx, record.xlsx$sex==2)
hist(recordf$run, col="RED", main="50m 달리기 히스토그램(여성)")
성별 상자그림 모아보기
# 성별 신장, 체중, 다리길이, 50m 달리기 - 상자그림
sexname=sex
sexname[sexname==1] = "남"
sexname[sexname==2] = "여"
par(mfrow=c(1, 4))
boxplot(height~sexname, main="성별 신장 상자그림")
boxplot(weight~sexname, main="성별 체중 상자그림")
boxplot(length~sexname, main="성별 다리길이 상자그림")
boxplot(run~sexname, main="성별 50m 달리기 상자그림")
성별 산점도
# 성별 신장과 50m 달리기의 산점도
plot(height, run, type="n")
points(height[sex==1], run[sex==1], pch="M", col="BLUE")
points(height[sex==2], run[sex==2], pch="F", col="RED")