GIST에서 공개하는 청년 AI. Big Data 아카데미 온라인 기초과정 빅데이터 분석과 R프로그래밍 강의를 참고하였다.
R Studio를 실행하여 실습을 해본다.
subset(데이터 이름, 조건)
조건에 맞는 데이터를 추출한다. 우선 csv파일인 brain2210.csv를 읽어서 brain 데이터를 생성하였다. brain 데이터는 성별과 뇌의 무게로 구성되어있다.
1
2
3
4
5
6
|
brain<-read.csv("brain2210.csv")
head(brain)
attach(brain)
brainf<-subset(brain, sex=='f')
mean(brainf$wt)
sd(brainf$wt)
|
cs |
brainf <-subset(brain, sex=='f'): brain 데이터에서 subset함수를 사용하여 성별이 여자인 데이터만을 추출하여 brainf 데이터를 생성하였다.
생성한 brainf 데이터의 wt 속성을 보면 평균은 1117.169, 표준편차는 98.97094라는 정보를 알 수 있다. 여기서는 attach함수를 사용하지 않았기 때문에 brainf 데이터에 wt 속성이라는 것을 표시해주어야 한다.(brainf$wt)
1
2
|
brain1300<-subset(brain,brain$wt<1300)
summary(brain1300)
|
cs |
brain1300 데이터는 brain데이터에서 뇌의 무게가 1300 미만인 데이터들만 추출한 데이터이다.
summary함수로 brain1300의 요약 통계치를 확인해보면 최소값, 25% 값, 중간, 평균, 75% 값, 최댓값을 출력하여 확인할 수 있다.
summary함수는 데이터 타입이 numeric 변수에 대해서는 위의 brain1300 데이터와 같은 출력을 하지만 범주형 변수에 대해서는 brainf 데이터와 같이 빈도를 출력한다.
aggregate(변수~그룹, 데이터, 함수)
aggregate 함수는 그룹별로 요약 통계치를 출력하는 함수이다.
1
2
|
aggregate(wt~sex, data=brain, FUN=mean)
aggregate(wt~sex, data=brain, FUN=sd)
|
cs |
aggregate(wt~sex, data=brain, FUN=mean): brain 데이터를 사용하여 성별 그룹 별로 뇌의 무게의 평균을 출력한다.
aggregate(wt~sex, data=brain, FUN=sd): 위와 같은 데이터의 표준편차를 출력한다.
그룹별로 평균, 표준편차, 최소값, 최댓값 등을 비교하고자 한다면 aggregate 함수를 이용하는 것이 더 편리하다.
추출한 데이터의 활용(그룹별 히스토그램)
그룹별로 히스토그램을 생성하여 데이터를 분석할 수 있다.
1
2
3
|
par(mfrow=c(2,2))
brainf<-subset(brain,brain$sex=='f')
brainm<-subset(brain,brain$sex=='m')
|
cs |
par(mfrow=c(2,2)): Plot창을 나눌 수 있다. 2x2로 나누어서 4개의 그래프를 볼 수 있다.
성별로 그룹을 나누어 2개의 데이터 brainf, brainm을 생성하였다.
1
2
|
hist(brainf$wt, breaks=12, col="green", cex=0.7, main="Histogram (Female)" ,xlab="brain weight")
hist(brainm$wt, breaks=12, col="orange", main="Histogram with (Male)" , xlab="brain weight")
|
cs |
성별로 히스토그램을 생성하였다. 여자는 왼쪽의 연두색 히스토그램이고 남자는 오른쪽의 주황색 히스토그램이다. 하지만 둘의 데이터는 범위가 차이가 있기 때문에 정확한 비교가 어렵다.
1
2
|
hist(brainf$wt, breaks = 12,col = "green",cex=0.7,
main="Histogram with Normal Curve (Female)" , xlim=c(900,1700),ylim=c(0,25), xlab="brain weight")
hist(brainm$wt, breaks = 12,col = "orange",
main="Histogram with Normal Curve (Male)" , xlim=c(900,1700), ylim=c(0,25),xlab="brain weight")
|
cs |
그렇기 때문에 위의 코드처럼 xlim, ylim 옵션을 사용하여 같은 스케일을 두어 높이를 비교할 수 있다.
데이터 내보내기
write 함수로 데이터를 txt, csv 파일로 내보낼 수 있다. setwd()로 지정한 작업 폴더에 저장된다.
1
2
3
|
write.table(brainf,file="brainf.csv", row.names = FALSE, sep=",", na=" ")
write.csv(brainf,file="brainf.csv", row.names = FALSE)
write.table(brainm, file="brainm.txt", row.names = FALSE, na=" ")
|
cs |
write.table(brainm, file="brainm.txt", row.names=FALSE, na=" "): txt 파일로 brainm 데이터를 저장한다. 파일 이름은 "brainm.txt"이고 줄 번호는 표시하지 않는다. 없는 값에는 " "를 넣는다.
왼쪽의 brainm.txt. 는 row.names를 FALSE 하여 줄 번호를 표시하지 않은 파일이고 오른쪽의 brainm2.txt는 row.names를 TRUE 하여 줄 번호를 표시한 파일이다.
write.csv(brainf, file="brainf.csv", row.names=FALSE): csv 파일로 brainf 데이터를 저장한다. 파일 이름은 "brainf.csv"이고 줄 번호는 표시하지 않는다.
brainf.csv 파일을 열어보면 위와 같이 저장되어 있는 것을 볼 수 있다.
'R Programming' 카테고리의 다른 글
[R Programming] R 데이터 활용 - Week 3-3 (0) | 2019.09.10 |
---|---|
[R Programming] R 데이터 생성 (불러들이기) - Week 3-1 (0) | 2019.09.07 |
[R Programming] 간단한 함수생성 및 루프(for, while) - Week 2-4 (0) | 2019.09.06 |
[R Programming] 벡터와 행렬의 연산 - Week 2-3 (0) | 2019.09.05 |
[R Programming] 객체 이름 정의와 데이터 프레임 - Week 2-2 (0) | 2019.09.04 |