대표값
평균값 mean()
중앙값 median()
분산 var()
표준편차 sd()
var.score <- c(85,90,93,86,82)
# 평균값 mean()
mean(var.score)
## [1] 87.2
#중앙값 median()
median(var.score)
## [1] 86
#분산 var()
var(var.score)
## [1] 18.7
#표준편차 sd()
sd(var.score)
## [1] 4.32435
나이 분석 예제
(var.age <- c(19,20,20,30,32,33,45,40,60,50,
54,25,35,44,46,70,80,22,24,11,
66,15,22,8,6,9,24,24,26,40
))
## [1] 19 20 20 30 32 33 45 40 60 50 54 25 35 44 46 70 80 22 24 11 66 15 22
## [24] 8 6 9 24 24 26 40
length(var.age)
## [1] 30
var.target <- cut(var.age,
breaks = c(0,10,20,30,40,50,Inf))
## defult : 이상 ~ 미만
## right = F : 초과 ~ 이하
var.target
## [1] (10,20] (10,20] (10,20] (20,30] (30,40] (30,40] (40,50]
## [8] (30,40] (50,Inf] (40,50] (50,Inf] (20,30] (30,40] (40,50]
## [15] (40,50] (50,Inf] (50,Inf] (20,30] (20,30] (10,20] (50,Inf]
## [22] (10,20] (20,30] (0,10] (0,10] (0,10] (20,30] (20,30]
## [29] (20,30] (30,40]
## Levels: (0,10] (10,20] (20,30] (30,40] (40,50] (50,Inf]
table(var.target)
## var.target
## (0,10] (10,20] (20,30] (30,40] (40,50] (50,Inf]
## 3 5 8 5 4 5
## 구간별로 빈도수 계산
data.frame(table(var.target))
var.csv <- "https://www.dropbox.com/s/0djexymb42zd1e2/example_salary.csv?dl=1"
var.salary <- read.csv(var.csv,stringsAsFactors = T,
na = "-")
head(var.salary)
#### STEP 2 데이터 프레임 생성
colnames(var.salary) <- c("Age","Salary","SpecialSalary","WorkingTime","Numberofworker","Career","Gender")
str(var.salary)
## 'data.frame': 100 obs. of 7 variables:
## $ Age : Factor w/ 10 levels "-19","20-24",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Salary : num 1346534 1584214 1922043 2130988 2414345 ...
## $ SpecialSalary : num 151840 115375 268058 335710 352816 ...
## $ WorkingTime : num 170 180 178 181 181 ...
## $ Numberofworker: num 15042 74251 143338 103585 65385 ...
## $ Career : Factor w/ 5 levels "1~3년미만","10년이상",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ Gender : Factor w/ 2 levels "남","여": 1 1 1 1 1 1 1 1 1 1 ...
# 'data.frame': 100 obs. of 7 variables:
# $ Age : Factor w/ 10 levels "-19","20-24",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ Salary : num 1346534 1584214 1922043 2130988 2414345 ...
# $ SpecialSalary : num 151840 115375 268058 335710 352816 ...
# $ WorkingTime : num 170 180 178 181 181 ...
# $ Numberofworker: num 15042 74251 143338 103585 65385 ...
# $ Career : Factor w/ 5 levels "1~3년미만","10년이상",..: 3 3 3 3 3 3 3 3 3 3 ...
# $ Gender : Factor w/ 2 levels "남","여": 1 1 1 1 1 1 1 1 1 1 ...
#detach(var.salary) ## 기존에 var.salary 라는 검색목록이 있다면 삭제
attach(var.salary)
var.mean <- mean(Salary,na.rm = T)
평균월급: ₩ 2,171,578
var.mid <- median(Salary,na.rm = T)
#임금평균과 중앙값의 차이가 거의 없기 때문에
#이상치(outlier)가 없고, 한쪽 쏠림이 없는 형태를 보입니다.
임금중앙값 : ₩2,120,345
var.range <- range(Salary,na.rm = T)
var.lowest <- which(Salary == 1117605)
var.highest <- which(Salary==4064286)
var.salary[var.lowest, ]
#### > var.salary[var.lowest, ]
var.salary[var.highest, ]
#### > var.salary[var.highest, ]
최저임금 : ₩1,117,605, 최고임금 : ₩4,064,286
최저임금 수령자 상세내역 연령 : 60세 월급 : ₩1,117,605 보너스 : ₩10,667 경력 : 1년미만 성별 : 여
최고임금 수령자 상세내역세 연령 : 48세 월급 : ₩4,064,286 보너스 : ₩12,716,896 경력 : 10년이상 성별 : 남
var.qut <- quantile(Salary,na.rm = T)
0% : ₩1,117,605
25% : ₩1,689,658
50% : ₩2,120,345
75% : ₩2,519,221
100% : ₩4,064,286
var.list <- list(평균월급= var.mean,
월급중앙값= var.mid,
월급범위= var.range,
월급사분위= var.qut)
평균월급 : ₩2,171,578
월급중앙값 : ₩2,120,345
월급범위 : ₩1,117,605 ~ ₩4,064,286
var.gender_sal <- tapply(Salary, #분석대상
Gender, #구분
mean, #함수
na.rm = T)
남성평균임금 : 2477332원
여성평균임금 : 1865823원
library(reshape2)
## Warning: package 'reshape2' was built under R version 3.5.1
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.5.1
var.melt <- melt(var.gender_sal)
ggplot(var.melt,
aes(
x = Var1,
y = value,
fill = Var1
))+geom_bar(stat = "identity"
)
var.gender_sal_range <- tapply(Salary, #분석대상
Gender, #구분
range, #함수
na.rm = T)
var.gender_sal_range
## $남
## [1] 1346534 4064286
##
## $여
## [1] 1117605 3002440
var.gender_sal_sd <- tapply(Salary, #분석대상
Gender, #구분
sd, #함수
na.rm = T)
var.gender_sal_sd
## 남 여
## 646470.7 468270.6
var.career <- tapply(Salary, #분석대상
Career, #구분
mean, #함수
na.rm = T)
var.career
## 1~3년미만 10년이상 1년미만 3~5년미만 5~10년미만
## 1905012 2907119 1730835 2028015 2360463
var.melt <- melt(var.career)
ggplot(
var.melt,
aes(
x = Var1,
y = value,
group = 1
)
)+geom_line(
color = "skyblue2",
size = 2
)+ coord_polar()+
ylim(0,max(var.melt$value))