오늘 배워볼 내용의 요약은 아래와 같습니다. 좌측과 같은 엑셀 데이터를 R에서 불러와서, 우측 위의 그림과 같은 그래프를 그릴 것입니다. 우측 아래와 같이 요약 통계량과 t검정 결과가 요약된 표도 출력할 것입니다.
먼저 R에서 엑셀 데이터를 불러오겠습니다. 메뉴탭에서 [File]-[Import Dataset]-[From Excel] 을 클릭합니다.
Browse 를 누르고 엑셀 데이터를 찾아서 열어줍니다.
데이터가 있는 Sheet를 선택한 뒤 우측 'Code Preview' 의 코드를 복사합니다.
Cancel을 눌러서 끄고 스크립트 창에 붙여넣어줍니다.
View 코드는 지우고, 변수 이름이 길기 때문에 짧게 dt 로 바꿔줍니다.
library(readxl)
dt <- read_excel("C:/Users/makhi/Dropbox/R_EXCEL_TO_T_TEST/EXCEL_R_data.xlsx",sheet = "R1")
잘 입력되었는지 확인해봅시다.
> dt
# A tibble: 60 x 3
반 키 몸무게
<chr> <dbl> <dbl>
1 A 161 102
2 A 175 60
3 A 175 105
4 A 156 87
dt에 입력된 자료형이 tibble입니다. 데이터프레임으로 바꿔줍니다.
dt=data.frame(dt)
먼저 그래프를 그리겠습니다. 독립변수가 범주형이고 종속변수가 연속형인 경우에는 상자수염그림을 그려주면 됩니다. 아래와 같이 화면을 둘로 분할하고, boxplot 함수로 상자수염그림을 그려줍니다. boxplot은 아래와 같은 형식으로 사용합니다.
boxplot(종속변수~독립변수,데이터)
#1. 그래프 그리기 (상자수염그림)
#boxplot(종속변수~독립변수,데이터)
par(mfrow=c(1,2))
boxplot(키~반,dt)
boxplot(몸무게~반,dt)
그래프는 아래와 같습니다. 이상치가 하나 있습니다. 엑셀을 열어서 이상치를 고쳐줍니다. 166인데 1666으로 입력되어 있을겁니다.
이상치를 고치고 다시 그래프를 그리면 아래와 같습니다.
이번에는 통계량을 구해봅시다. 통계량을 구한 뒤 우리가 만들 표는 아래와 같은 형태입니다.
변수는 아래와 같이 사용하겠습니다.
127강에서 만든 함수를 사용하겠습니다. D11이라는 변수에 A반 키의 통계량을 넣고, D12라는 변수에 B반 키의 통계량을 넣는 식입니다.
#2. 통계량 구하기
#함수 평균±표준편차(최솟값,최댓값)
MSMM=function(data,decimal)
{
m=round(mean(data,na.rm=TRUE),decimal)
sd=round(sd(data,na.rm=TRUE),decimal)
max=round(max(data,na.rm=TRUE),decimal)
min=round(min(data,na.rm=TRUE),decimal)
result=paste0(m,"±",sd,"(",max,",",min,")")
print(result)
}
D11=MSMM(dt[dt['반']=="A",'키'],decimal=1)
D12=MSMM(dt[dt['반']=="B",'키'],decimal=1)
D21=MSMM(dt[dt['반']=="A",'몸무게'],decimal=1)
D22=MSMM(dt[dt['반']=="B",'몸무게'],decimal=1)
이번에는 t검저을 합시다. D13에 키 t검정 p값을, D23에 몸무게 t검정 결과를 넣습니다.
#3. t검정하기
D13=round(t.test(키~반,dt)$p.value,3) #p_height
D23=round(t.test(몸무게~반,dt)$p.value,3) #p_weight
마지막으로 표를 생성해줍니다. R1은 1행, R2는 2행을 의미합니다. 각 행을 만들어준 뒤에 rbind를 이용하여 데이터프레임으로 합쳐줍니다. 열이름과 행이름을 지정합니다.
#4. 표 생성하기
R1=c(D11,D12,D13)
R2=c(D21,D22,D23)
re_tab=rbind(R1,R2)
colnames(re_tab)=c("A반","B반","p-value")
rownames(re_tab)=c("키","몸무게")
표를 열어봅시다.
View(re_tab)
<전체 코드 모아보기>
library(readxl)
dt <- read_excel("C:/Users/makhi/Dropbox/R_EXCEL_TO_T_TEST/EXCEL_R_data.xlsx",sheet = "R1")
dt=data.frame(dt)
#1. 그래프 그리기 (상자수염그림)
#boxplot(종속변수~독립변수,데이터)
par(mfrow=c(1,2))
boxplot(키~반,dt)
boxplot(몸무게~반,dt)
#2. 통계량 구하기
#함수 평균±표준편차(최솟값,최댓값)
MSMM=function(data,decimal)
{
m=round(mean(data,na.rm=TRUE),decimal)
sd=round(sd(data,na.rm=TRUE),decimal)
max=round(max(data,na.rm=TRUE),decimal)
min=round(min(data,na.rm=TRUE),decimal)
result=paste0(m,"±",sd,"(",max,",",min,")")
print(result)
}
D11=MSMM(dt[dt['반']=="A",'키'],decimal=1)
D12=MSMM(dt[dt['반']=="B",'키'],decimal=1)
D21=MSMM(dt[dt['반']=="A",'몸무게'],decimal=1)
D22=MSMM(dt[dt['반']=="B",'몸무게'],decimal=1)
#3. t검정하기
D13=round(t.test(키~반,dt)$p.value,3) #p_height
D23=round(t.test(몸무게~반,dt)$p.value,3) #p_weight
#4. 표 생성하기
R1=c(D11,D12,D13)
R2=c(D21,D22,D23)
re_tab=rbind(R1,R2)
colnames(re_tab)=c("A반","B반","p-value")
rownames(re_tab)=c("키","몸무게")
View(re_tab)
'R 주제 > R 기초 및 통계 강의' 카테고리의 다른 글
[R강의] 130. 데이터프레임 열 인덱싱 결과는 두 가지 입니다. (0) | 2022.04.02 |
---|---|
[R강의] 129. 분할표 만들기 (빈도, 비율) (0) | 2021.12.31 |
[R강의] 127. 평균±표준편차(최솟값,최댓값) 출력하는 함수 만들기 (0) | 2021.12.29 |
[R강의] 126. 히스토그램 원하는 값으로 만들기 (0) | 2021.10.12 |
[R강의] 125. 엑셀의 vlookup 기능 구현 (0) | 2021.09.27 |
댓글