1. ์ด์ฐํ ๋ณ์ ์๊ฐํ
: ์ ์ ๋จ์๋ก ๋๋์ด์ง๋ ๋ณ์(์๋
์, ํ๋งค์, ์๋์ฐจ์)
์ฐจํธ ๋ฐ์ดํฐ ์์ฑ
chart_data <- c(305,450, 320, 460, 330, 480, 380, 520)
names(chart_data) <- c("2016 1๋ถ๊ธฐ","2017 1๋ถ๊ธฐ","2016 2๋ถ๊ธฐ","2017 2๋ถ๊ธฐ","2016 3๋ถ๊ธฐ","2017 3๋ถ๊ธฐ","2016 4๋ถ๊ธฐ","2017 4๋ถ๊ธฐ")
str(chart_data)
chart_data
* Named num [1:8] : 1์ฐจ์์ ์ซ์ํ
* attr(*, "names")= chr [1:8] : ์์์ ์ด๋ฆ ์ ๋ณด
chart_data
range(chart_data) #305, 520
length(chart_data) #8
labels = names(chart_data)
labels #๋ฐ์ดํฐ ์ด๋ฆ๋ง ์ถ์ถ
1) ๋ง๋์ฐจํธ
์ธ๋ก๋ง๋์ฐจํธ
barplot(chart_data, ylim=c(0, 600), col=rainbow(8), #ylim : y์ถ ๋๊ธ ๊ฐ
ylab='๋งค์ถ์ก(๋จ์:์ฒ์)', xlab='๋
๋๋ณ ๋ถ๊ธฐํํฉ',
main='2016vs2017๋
๋ถ๊ธฐ๋ณ ๋งค์ถํํฉ')
๊ฐ๋ก๋ง๋์ฐจํธ : horiz = TRUE ์์ฑ ์ถ๊ฐ
barplot(chart_data, xlim=c(0, 600), horiz=TRUE, col=rainbow(8),
ylab='๋
๋๋ณ ๋ถ๊ธฐํํฉ', xlab='๋งค์ถ์ก(๋จ์:์ฒ์)',
main='2016vs2017๋
๋ถ๊ธฐ๋ณ ๋งค์ถํํฉ')
๋ฒ๋ก ์ถ๊ฐ
barplot(chart_data, ylim=c(0, 700), col=rainbow(8), #ylim : y์ถ ๋๊ธ ๊ฐ
ylab='๋งค์ถ์ก(๋จ์:์ฒ์)', xlab='๋
๋๋ณ ๋ถ๊ธฐํํฉ',
main='2016vs2017๋
๋ถ๊ธฐ๋ณ ๋งค์ถํํฉ',
legend.text=names(chart_data), #๋ฒ๋กํ
์คํธ
args.legend=list(x='topleft'),#๋ฒ๋ก ์์น
)
์ฐจํธ ๊ฐ์ text ์ถ๊ฐ
: ์ฐจํธ๋ ๋ณ์ ์ถ๊ฐ ๊ฐ๋ฅ
bp = barplot(chart_data, ylim=c(0, 600), col=rainbow(8), #ylim : y์ถ ๋๊ธ ๊ฐ
ylab='๋งค์ถ์ก(๋จ์:์ฒ์)', xlab='๋
๋๋ณ ๋ถ๊ธฐํํฉ',
main='2016vs2017๋
๋ถ๊ธฐ๋ณ ๋งค์ถํํฉ')
text ๋ฐ์
text(x=bp, y=chart_data+20,
labels=chart_data, cex=0.7) #x,y์ถ์ ์ขํ ์ค์
1ํ 2์ด ์ฐจํธ ๊ทธ๋ฆฌ๊ธฐ
par(mfrow=c(1,2))
VADeaths #์๊ณจvs๋์ ์ถ์ ์ฌ๋ง ๋น์จ ์๋ฃ
str(VADeaths) #num[1:5, 1:4] : 2์ฐจ์ ์ซ์ํ(๋งคํธ๋ฆญ์ค ๊ตฌ์กฐ)
#..$ : chr [1:5] "50-54" "55-59"... ํ์ ์ด๋ฆ
#..$ : chr [1:4] "Rural Male" "Rural Female"... ์ด์ ์ด๋ฆ
์ผ์ชฝ : ๊ฐ๋ณ๋ง๋
barplot(VADeaths, beside=T,
col=rainbow(5),
main="๋ฒ์ง๋์์ฃผ ํ์๊ณ์ธต ์ฌ๋ง๋น์จ")
์ค๋ฅธ์ชฝ : ๋์ ํ ๋ง๋์ฐจํธ
barplot(VADeaths, beside=F,
col=rainbow(5),
main="๋ฒ์ง๋์์ฃผ ํ์๊ณ์ธต ์ฌ๋ง๋น์จ")
1ํ 1์ด ์๊ฐํ
par(mfrow=c(1,1))
2) ์ ์ฐจํธ (ํ์ฉ๋ ๋ฎ์)
dotchart(chart_data, color=c("green","red"),
lcolor="black",
pch=1:2, labels=names(chart_data), #pch : ์ ์ ๋ชจ์
xlab="๋งค์ถ์ก",
main="๋ถ๊ธฐ๋ณ ํ๋งคํํฉ ์ ์ฐจํธ ์๊ฐํ",
cex=1.2) #cex=1.2 : 1.2๋ฐฐ ํ๋/์ถ์
3) ํ์ด ์ฐจํธ : ์ ์ ์จ ์๊ฐํ
pie(chart_data, labels=names(chart_data),
border='blue', col=rainbow(8), cex=1.2) #border : ๊ฒฝ๊ณ์
ํ์ด ์ฐจํธ ์ฃผ์์ฌํญ : ์ค๋ณต์๋ต ๋ฐ์ ์ ๋จ (๋น์จ ์ ๊ณต)
genre = c(45,25,15,30) #๊ฐ ๊ฐ์ด 100์ค ์ด๋์ ๋์ ๋น์จ์ ์ฐจ์งํ๋์ง
sum(genre)
names(genre) = c('์ก์
','์ค๋ฆด๋ฌ','๊ณตํฌ','๋๋ผ๋ง') #๊ฐ ์์์ ์ด๋ฆ ์ถ๊ฐ
genre
pie(genre, labels=names(genre), #๋ฏธ๋ฆฌ ์ง์ ํด๋๋ name ๊ฐ ๊บผ๋ด์ค๊ธฐ
col=rainbow(4))
title(main='์ํ ์ ํธ๋ ์กฐ์ฌ๊ฒฐ๊ณผ', cex.main=2)
๋น์จ ๋ฐํ
ratio=prop.table(genre)*100
ratio=round(ratio,4) #์์์ 4์๋ฆฌ๊น์ง๋ง ์ถ๋ ฅ
abels์ ๋น์จ ์ ์ฉ
labels=paste(names(genre), '\n', ratio) #paste : ๋ฌธ์์ด์ ํ๋๋ก ๋ฌถ์ด์ค(๋ ์ด๋ธ, ์ค๋ฐ๊ฟ, )
labels
labels๊ฐ์ ์ฐจํธ์ ์ถ๊ฐ
pie(genre, labels=labels, #๋ฏธ๋ฆฌ ์ง์ ํด๋๋ name ๊ฐ ๊บผ๋ด์ค๊ธฐ
col=rainbow(4))
title(main='์ํ ์ ํธ๋ ์กฐ์ฌ๊ฒฐ๊ณผ', cex.main=2)
2. ์ฐ์ํ ๋ณ์ ์๊ฐํ
์ฃผ์ด์ง ๋ฒ์ ์์ ๋ชจ๋ ์ฐ์ ๊ฐ(์ค์ ๊ฐ)์ ๊ฐ๋ ๋ณ์
์๊ฐ, ๊ธธ์ด, ํค, ๋ชธ๋ฌด๊ฒ, ๋์ด...
1) ์์ ๊ทธ๋ํ
์์ฝํต๊ณ ์ ๋ณด -> ์๊ฐํ ๋๊ตฌ
[๋ถ์๊ธฐ์ฌ ์์ ] ์์ฝํต๊ณ์์ ๋ณผ ์ ์๋ ์ ๋ณด๋?
[๋ณด๊ธฐ] ์ฌ๋ถ์์, ํ๊ท , ์ต์๊ฐ, ์ต๋๊ฐ, ์ด์์น, ๋ถ์ฐ
[์ ๋ต] ๋ถ์ฐ
VADeaths
summary(VADeaths)
boxplot(VADeaths) #๊ตต์ ์ ์ :Dedian
#summary ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ฐจํธ
VADeaths[,1] #Rural Male
quantile(VADeaths[,1]) #0% 25% 50% 75% 100%
#11.7 18.1 26.9 41.0 66.0
#min 1st 2nd 3rd max
2) ํ์คํ ๊ทธ๋จ : ๊ฐ ๊ณ๊ธ์ ๋น๋์
str(iris)
table(iris$Species) #์ง๋จ๋ณ ๋น๋์
range(iris$Spal.Lenght) #4,3,7,9
(1) ๊ธฐ๋ณธ ํ์คํ ๊ทธ๋จ
hist(iris$Sepal.Length, xlab='๊ฝ๋ฐ์นจ ๊ธธ์ด',
main='๋ถ๊ฝ์ ๊ฝ๋ฐ์นจ ๊ธธ์ด')
(2) ๊ณ๊ธ ์ ์กฐ์
hist(iris$Sepal.Length, xlab='๊ฝ๋ฐ์นจ ๊ธธ์ด',
breaks=30,
main='๋ถ๊ฝ์ ๊ฝ๋ฐ์นจ ๊ธธ์ด')
(3) ํ๋ฅ ๋ฐ๋ ํจ์(pdf)
step1 : hist ๋ฐ๋ ๋จ์ ๋ณ๊ฒฝ
hist(iris$Sepal.Width, xlab='๊ฝ๋ฐ์นจ ๋์ด',
main='๋ถ๊ฝ์ ๊ฝ๋ฐ์นจ ๋์ด',
freq=FALSE, breaks=30)
step2 : ํ๋ฅ ๋ฐ๋ํจ์(pdf) -> ํ๋ฅ ๋ฐ๋ ์ถ์ -> ๊ณก์ ์ถ๊ฐ
lines(density(iris$Sepal.Width), col='red') #lines:๊ณก์ ์ถ๋ ฅ ํจ์
(4) ์ ๊ท๋ถํฌ ๊ณก์
range(iris$Sepal.Width) #2.0 4.4
vector ๋ณ์ ์์ฑ
x = seq(2.0, 4.4, 0.1)
x
curve(dnorm(x, mean=mean(iris$Sepal.Width),#curve : ์ง์ ๊ทธ๋ํ๋ฅผ ๊ณก์ ์ผ๋ก dnorm : ์ ๊ท๋ถํฌ ๋ง๋ค์ด์ฃผ๋ ํจ์
sd=sd(iris$Sepal.Width)),
col='blue', add = TRUE)
* ์๋์ ์ฒญ๋๋ก ์ ๊ท๋ถํฌ ์ฌ๋ถ ๊ตฌ๋ถ๊ฐ๋ฅ
3. ์ฐ์ ๋ : 2๊ฐ ๋ณ์ ์ด์ฉ
plot(iris$Sepal.Length, iris$Petal.Length) #plot(x,y) ์ปด๋ง๊ตฌ๋ถ
plot(iris$Sepal.Length ~ iris$Petal.Length) #plot(y~x) ํ๋๊ตฌ๋ถ
1๊ฐ ๋ณ์ ์ด์ฉ
price = runif(n=100, min=1, max=100) #1~100์ฌ์ด์ ๋์(์์๊ฐ)
price
plot(price) #x=index, y=price
par(mfrow=c(2,2)) # 2ํ 2์ด ์ฐจํธ ๊ทธ๋ฆฌ๊ธฐ
plot(price, type="l") # ์ ํ : ์ค์
plot(price, type="o") # ์ ํ : ์ํ๊ณผ ์ค์ (์ํ ํต๊ณผ)
plot(price, type="h") # ์ง์
plot(price, type="s") # ๊บพ์์
plot() ํจ์ ์์ฑ : pch : ์ฐ๊ฒฐ์ ๋ฌธ์ํ์
-> plotting characher-๋ฒํธ(1~30)
plot(price, type="o", pch=5) # ๋น ์ฌ๊ฐํ
plot(price, type="o", pch=15)# ์ ๋ชจ์์ด ์ฑ์์ง ๋ง๋ฆ๋ชจ
plot(price, type="o", pch=20, col="blue") #color ์ง์
plot(price, type="o", pch=20, col="orange", cex=1.5) #character expension(ํ๋)
plot(price, type="o", pch=20, col="green", cex=2.0, lwd=3) #lwd : line width
๋ง๋ฅ์ฐจํธ
methods(plot) #29๊ฐ ๊ฐ์ฒด
1) ์๊ณ์ด ๋ฐ์ดํฐ (์ถ์ธ์ ์ ์ ํฉ)
WWWusage
plot(WWWusage) #x์ถ:ํต๊ณ y์ถ:์๊ฐ์ ํ๋ฆ
2) ํ๊ท๋ชจ๋ธ -> ํ๊ท๋ถ์ ์ฐจํธ (์๋์ผ๋ก ์์ฑ)
names=iris #iris์ ๋ณ์๋ช
๋ง ์ถ์ถ
model = lm(Petal.Length~Sepal.Length, data=iris) #formul:์. y(์ข
์๋ณ์)~x(๋
๋ฆฝ๋ณ์)
์ฐ์ ๋
plot(Petal.Length~Sepal.Length, data=iris)
ํ๊ท์
abline(model, col='red') #x์ y์ ๋น๋ก๊ทธ๋ํ
plot(model)
plot 2๊ฐ๋ฅผ ๊ฒน์น๊ธฐ
plot(iris$Sepal.Length, type='o', ann=FALSE, col='blue') #ann:์ถ์ ์ด๋ฆ FALSE ์ ์ธ
par(new=T) #๊ทธ๋ํ ๊ฒน์น๊ธฐ
plot(iris$Petal.Length, type='o', axes=FALSE, ann=FALSE, col='red')
* axes = FALSE : ์ถ์ ๋๊ธ ๋๋ฆ ์ ์ธ
๋ฒ๋ก ์ถ๊ฐ
legend(x=0, y=7, legend=c('๊ฝ๋ฐ์นจ์ ๊ธธ์ด','๊ฝ์์ ๊ธธ์ด'),
col=c('blue','red'), lty=1)
4)์ฐ์ ๋ ํ๋ ฌ(scatter matrix) : ๋ณ์ ๋น๊ต
pairs(iris[,-5], col=iris$Species) #์ฐ์ํ ๋ณ์ 4๊ฐ ์ฌ์ฉ
#setosa๋ง ์ ํ์ฑ์ด ๋ชจ์๋์ ํ์ธํ ์ ์์
plot(iris)
4. 3์ฐจ์ ์ฐ์ ๋
3๊ฐ์ ์์ธ์ ๊ฒน์น์ง ์๊ฒ ๋ณผ ์ ์์
install.packages('scatterplot3d')
library(scatterplot3d)
๊ฝ์ ์ข
๋ฅ๋ณ ๋ถ๋ฅ
iris_setosa = iris[iris$Species == 'setosa',] #[ํ์ ๋ํ ์์ธ, (์ด ์๋ต)]: #'setosa' 50๊ฐ๋ง ์๋ธ์
์ผ๋ก ๋ง๋ค์ด์ง.
iris_versicolor = iris[iris$Species == 'versicolor',]
iris_virginica = iris[iris$Species == 'virginica',]
dim(iris_setosa) #50๊ฐ, 5๊ฐ
ํ๋ ์ ์์ฑ
scatterplot3d(๋ฐ๋ณ, ์ค๋ฅธ์ชฝ๋ณ, ์ผ์ชฝ๋ณ, type='n')
d3 <- scatterplot3d(iris$Petal.Length, iris$Sepal.Length, iris$Sepal.Width, type='n')
#type='n' : ๊ธฐ๋ณธ ์ฐ์ ๋ ์ ์ธ
๋ฐ์ดํฐ ๋ณ์ ์๊ฐํ
d3$points3d(iris_setosa$Petal.Length, iris_setosa$Sepal.Length,
iris_setosa$Sepal.Width, bg='orange', pch=21) #bg:์๊น
d3$points3d(iris_versicolor$Petal.Length, iris_versicolor$Sepal.Length,
iris_versicolor$Sepal.Width, bg='blue', pch=23) #pch=23:๋ง๋ฆ๋ชจ
d3$points3d(iris_virginica$Petal.Length, iris_virginica$Sepal.Length,
iris_virginica$Sepal.Width, bg='green', pch=25)
'๋ฐ์ดํฐ๋ถ์๊ฐ ๊ณผ์ > R' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DAY15. R ์ ํ๋ฐ์ดํฐ (0) | 2021.10.05 |
---|---|
DAY14. R EDA, ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ (0) | 2021.10.01 |
DAY12. R Basic (์ ์ด๋ฌธ๊ณผ ํจ์) (0) | 2021.09.29 |
DAY11. R Basic (๋ฐ์ดํฐ ์ ์ถ๋ ฅ) (0) | 2021.09.28 |
DAY10. R Basic (์๋ฃ ๊ตฌ์กฐ ์ ํ) (0) | 2021.09.27 |