기본 R 데이터인 airquality 데이터셋으로 작업하겠습니다.
1. 결측치 제거
colSums(is.na(airquality))
airquality = na.omit(airquality)

Ozone, Solar.R 칼럼에 결측치가 있었고, 이를 제거했습니다.
2. 계절에 따라 두 개의 표본으로 나누기
airquality$season = ifelse(airquality$Month == 5 | airquality$Month == 9,
"non-summer", "summer")
Month 칼럼은 5~9월 데이터를 담고 있으므로 5, 9월일 경우 "non-summer", 나머지 달은 "summer"로 설정
3. Ozone과 Solar.R의 관계를 나타내는 2D 그래프
plot(airquality$Ozone, airquality$Solar.R,
pch = c(1, 16)[as.numeric(factor(airquality$season))],
xlab = 'Ozone', ylab = 'Solar.R')
legend(100, 80, legend=c("summer", "non-summer"),
pch = c(16, 1), horiz = T)

계절별 Ozone과 Solar.R 변수의 산점도를 그려봤습니다.
4. Ozone, Solar.R, Temp의 관계를 나타내는 3D 그래프
library(scatterplot3d)
s3d = scatterplot3d(x = airquality$Ozone, y = airquality$Solar.R,
z = airquality$Temp,
pch=c(1,16)[as.numeric(factor(airquality$season))],
xlab="Ozone", ylab="Solar.R", angle=45,
zlab="Temp", lty.hide=2,
type="h", y.margin.add=0.1, font.axis=2, font.lab=2)
legend('bottomright', c("Non-summer", "summer"),
pch=c(1, 16), text.font = 2)

세 변수로 3D 산점도를 그려봤습니다.
5. Draftman’s plot
airquality = data.frame(Date_index = rownames(airquality), airquality)
airquality$Date_index = as.numeric(airquality$Date_index)
head(airquality)
pairs(airquality[, 1:5], pch=c(1, 16)[as.numeric(factor(airquality$season))])
par(xpd = NA)
legend(-0.003, 1.07, legend = c("Non-summer", "summer"),
pch=c(1, 16), cex = 0.7, text.font = 2)


각행을 나타내는 Date index를 만든 후, Date index, Ozone, Solar.R, Wind, Temp를 이용해 Draftman’s plot 을 그렸습니다.
6. Sciviews R package를 이용, box plot을 포함한 Draftman plot
library(SciViews)
pairs(airquality[, 1:5], diag.panel = panel.boxplot,
pch=c(1, 16)[as.numeric(factor(airquality$season))], font.labels = 2)
legend(-0.003, 1.07, legend = c("Non-summer", "summer"),
pch=c(1, 16), cex = 0.7, text.font = 2)

7. lattice R package를 이용한 Draftman plot
library(lattice)
splom(~ airquality[,1:5],
groups = airquality$season,
data = airquality,
ps = 0.5,
varname.cex = 0.5,
panel = panel.superpose,
key = list(columns = 2,
points = list(pch = c(1, 16),
col = c(1, 16)),
text = list(c("non-summer", "summer"))))

8. GGally R package를 이용한 Draftman plot
library(GGally)
ggscatmat(airquality, columns = 1:5, color="season")

Temp와 Ozone의 상관계수는 0.65, 0.69이므로 변수 간 상관계수 중 가장 크다는 것을 알 수 있습니다.
9. 네 개의 변수들의 평균값을 표현한 선 그래프
meanbymonth = aggregate(. ~ Month, data = airquality[2:6], FUN = mean)
head(meanbymonth)
plot(Ozone ~ Month, data = meanbymonth, type = 'b', pch = 2,
ylim = c(min(meanbymonth[, 2:5]), max(meanbymonth[, 2:5])))
for (i in 3:5) {
lines(meanbymonth$Month, meanbymonth[, i], type = 'b',
pch = i, lty = i)
}
legend(5.2, 170, legend = c(colnames(meanbymonth[, 2:5])), pch=c(2:5))


10. 네 변수의 평균값을 bar plot으로 표현
vars = t(data.matrix(meanbymonth[, -1]))
colnames(vars) = c(5:9)
barplot(vars, names.arg = colnames(vars),
col = c("grey","skyblue","pink","yellowgreen"),
beside = TRUE, ylim = c(0,230), cex.names = 0.7,
xlab = 'Month')
box()
labs = colnames(meanbymonth[, 2:5])
legend("topright", legend = labs, fill = c("grey","skyblue","pink","yellowgreen"),
cex = 0.8)

'R' 카테고리의 다른 글
[R] diamonds dataset 분석 프로젝트 (0) | 2024.05.29 |
---|---|
[R] 다변량 자료 분석 (2) : Hotelling T^2 검정 (2) | 2024.03.21 |
[R] 데이터 전처리 및 시각화 (4) (0) | 2024.02.23 |
[R] 데이터 전처리 및 시각화 (3) (0) | 2024.01.23 |
[R] 데이터 전처리 및 시각화 (2) (1) | 2024.01.23 |