Hayden's Archive

[R] R Gui 통계 관련 코드 및 시각화 본문

Study/Data

[R] R Gui 통계 관련 코드 및 시각화

_hayden 2020. 7. 15. 23:52

 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")