티스토리 뷰

setwd("C:/Rdata")
getwd()
#Ctrl + l => 콘솔창 정리
install.packages("foreign")
install.packages("readxl")
library(foreign)
library(dplyr)
library(ggplot2)
library(readxl)

raw_welfare=read.spss(file = "Koweps_hpc10_2015_beta1.sav",
                      to.data.frame = T)#데이타 프레임 트루
#원본 데이터는 그대로 두고 가공하기 위한 사본을 만듦
welfare=raw_welfare
head(welfare)
tail(welfare)
View(welfare) #()에 해당되는 전체 데이터 보기
str(welfare)
summarise(welfare)

#이름 재정의하기
welfare = rename(welfare,
                  gender = h10_g3,            # 성별
                  birth = h10_g4,          # 태어난 연도
                  marriage = h10_g10,      # 혼인 여부
                  religion = h10_g11,      # 종교유무
                  income = p1002_8aq1,     # 월급
                  code_job = h10_eco9,     # 직종 코드
                  code_region = h10_reg7)  # 지역 코드
head(welfare)
names(welfare)

#주제 : 성별에 따른 급여차이를 분석
class(welfare$gender)
table(welfare$gender)
welfare$gender=ifelse(welfare$gender==9,NA,welfare$gender)
table(is.na(welfare$gender))
welfare$gender=ifelse(welfare$gender==1,"male","female")
kk=table(welfare$gender)
qplot(welfare$gender) #ggplot2 안에 있는 임시적그래프 확인 방법

#barplot으로 확인 하기
barplot(kk,col=c("red","blue")) #f는 빨강, m은 파랑으로 표시
barplot(kk,col=c("red","blue"),ylim=c(0,10000)) #왼쪽에 기준 표시
tt=barplot(kk,col=c("red","blue"),ylim=c(0,10000))
text(tt,kk,label=paste0(kk,"명"),pos=3,col='red',cex=2) #f, m 수치 표시
plot.new() #frame() <<<<  초기화


class(welfare$income) #데이터타입
summary(welfare$income) #for NA유무 체크
welfare$income=ifelse(welfare$income %in%c(0,9999),#0이거나 9999이면 NA로 처리
                      NA,welfare$income)
table(is.na(welfare$income)) #true = NA값

#성별에 따른 소득
gender_income=data.frame(welfare %>%
  filter(!is.na(income)) %>% #na가 아닌 것만 값 가져오기
  group_by(gender) %>%
  summarise(mean_incom=round(mean(income))))
gender_income
ggplot(data=gender_income,aes(x=reorder(gender,-mean_incom),
                              y=mean_incom)) +
  geom_col(fill=c("red","orange"))+ #알파벳 순서로 색이 들어가서 female이 red가 됨
  geom_text(aes(label=paste(gender_income$mean_incom,"만 원")),
            vjust=-0.2,col=2,cex=8)+xlab("성별")+ylab("소득") #vjust = 약간 위에 위치
frame() #초기화


#주제 : 연령대에 따른 월급 차이를 분석하시오
class(welfare$birth)
table(welfare$birth)
welfare$birth=ifelse(welfare$birth==9,NA,welfare$birth)
table(is.na(welfare$birth))
kk=table(welfare$birth)
qplot(welfare$birth) #ggplot2 안에 있는 임시적그래프 확인 방법

#barplot으로 확인 하기
barplot(kk,col=rainbow(7)) #f는 빨강, m은 파랑으로 표시
barplot(kk,col=c("red","blue"),ylim=c(0,10000)) #왼쪽에 기준 표시
tt=barplot(kk,col=c("red","blue"),ylim=c(0,10000))
text(tt,kk,label=paste0(kk,"명"),pos=3,col='red',cex=2) #f, m 수치 표시
plot.new() #frame() <<<<  초기화


class(welfare$income) #데이터타입
summary(welfare$income) #for NA유무 체크
welfare$income=ifelse(welfare$income %in%c(0,9999),#0이거나 9999이면 NA로 처리
                      NA,welfare$income)
table(is.na(welfare$income)) #true = NA값
# birth를 나이로 환산
welfare$age <- 2015 - welfare$birth + 1
summary(welfare$age)
qplot(welfare$age)

head(age_income)

#나이에 따른 소득
age_income=data.frame(welfare %>%
                           filter(!is.na(income)) %>% #na가 아닌 것만 값 가져오기
                           group_by(age) %>%
                           summarise(mean_income=round(mean(income))))
age_income

#꺾은선그래프
ggplot(data = age_income,
       aes(x = age, y = mean_income)) +
  geom_line(size=1) +
  geom_text(aes(label=paste(mean_income,"만 원")),
            vjust=-0.6,col=2,cex=2)+xlab("나이")+ylab("소득")

#막대그래프
ggplot(data=age_income,
       aes(x=age,y=mean_income)) +
  geom_col(fill=rainbow(69))+ #알파벳 순서로 색이 들어가서 female이 red가 됨
  geom_text(aes(label=paste(mean_income,"만 원")),
            vjust=-0.2,col=2,cex=2)+xlab("나이")+ylab("소득") #vjust = 약간 위에 위치
frame() #초기화



#young(20대 미만) / middle(40대 미만) / old로 표시

welfare <- welfare %>%
  mutate(ageg = ifelse(age < 30, "young",
                       ifelse(age <= 59 , "middle", "old")))

table(welfare$ageg)
qplot(welfare$ageg)

ageg_income <- welfare %>%
  filter(!is.na(income)) %>%
  group_by(ageg) %>%
  summarise(mean_income = round(mean(income)))

ageg_income

ggplot(data = ageg_income,
       aes(x = ageg, y = mean_income, fill = mean_income)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label=paste(mean_income,"만 원")),
            vjust=-0.6,col=2,cex=3)+xlab("연령대")+ylab("소득") +
    scale_x_discrete(limits = c("young", "middle", "old"))

#나이에 따른 성별로 월급차이 분석
gender_income <- welfare %>%
  filter(!is.na(income)) %>%
  group_by(age, gender) %>%
  summarise(mean_income = round(mean(income)))

gender_income

aa=ggplot(data = gender_income,
       aes(x = age, y = mean_income, col = gender)) +
  geom_line(size=1) +
  geom_text(aes(label=paste(mean_income,"만 원")),
            vjust=-0.3,col=2,cex=2)+xlab("연령대")+ylab("소득")

ggplotly(aa)
install.packages("plotly")
library(plotly)

#어떤 직업이 월급을 가장 많이 받는지를 분석하시오
head(welfare$code_job)

library(readxl)
list_job=read_excel("Koweps_Codebook.xlsx",
                    col_names = T,
                    sheet = 2)
head(list_job)

welfare=left_join(welfare,list_job,by="code_job")
head(welfare$job.y)
welfare %>%
  filter(!is.na(code_job)) %>%
  select(code_job,job) %>%
  head(10)
job_income = data.frame(welfare %>%
  filter(!is.na(job) & !is.na(income)) %>%
  group_by(job) %>%
  summarise(mean_income = round(mean(income))))
head(job_income)

#급여 상위 10개 직업 보기
top10=job_income %>%
  arrange(desc(mean_income)) %>%
  head(10)
top10

ggplot(data=top10,
       aes(x=reorder(job,-mean_income), y=mean_income))+
  geom_col(fill=rainbow(10)) +
  coord_flip() +
  geom_text(aes(label=paste0(top10$mean_income,"만원")),
            hjust=-0.2,col=2,cex=6) +
  xlab("직업") + ylab("평균소득득") + ggtitle("직무별 상위 10위의 소득")

#급여 하위 10개 직업
bottom10=job_income %>%
  arrange(mean_income) %>%
  head(10)
bottom10

ggplot(data=bottom10,
       aes(x=reorder(job,-mean_income), y=mean_income, fill = mean_income))+
  geom_bar(stat = "identity") +
  coord_flip() +
  geom_text(aes(label=paste0(bottom10$mean_income,"만원")),
            hjust=-0.3,col=2,cex=6) +
  xlab("직업") + ylab("평균소득득") + ggtitle("직무별 하위 10위의 소득")
ggplotly(bb)
반응형
LIST

'공부합시다 > 찍먹' 카테고리의 다른 글

[R] 영화 평점에 따른 타이틀 선정크롤링  (0) 2021.04.13
[R] rvest pkg for Crawling  (0) 2021.04.13
[R] Barplot  (0) 2021.04.13
[R] Dygraph pkg  (0) 2021.04.12
[R] 텍스트마이닝  (0) 2021.04.12
댓글
링크
공지사항
최근에 올라온 글