ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210802_1(데이터분석,R)
    BigData 2021. 8. 2. 18:06
    library(foreign) # SPSS 파일
    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)
    dim(welfare)
    str(welfare)
    summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    
    #### 성별에 따른 월급차이
    # 1. 성별에 대한 이상치,결측치 확인 및 처리
    # 1) 데이터형
    class(welfare$sex)
    #"numeric"
    
    # 2) 빈도 측정
    table(welfare$sex)
    # 1    2 
    # 7578 9086 이상치 없음
    
    table(is.na(welfare$sex))
    # FALSE 
    # 16664 결측치 없음
    
    # 이상치가 원래 있었다면
    welfare$sex <- ifelse(welfare$sex == 9, NA, welfare$sex)
    
    # 1이면 male로 2이면 female로 변경하기
    welfare$sex <- ifelse(welfare$sex == 1, "male", "female")
    class(welfare$sex)
    # "character"
    table(welfare$sex)
    # female   male 
    # 9086   7578 
    
    qplot(welfare$sex)
    
    # 2. 소득에 대한 이상치와 결측치 확인 및 처리
    # 1) 데이터 형
    class(welfare$income)
    # "numeric"
    
    # 결측치 확인
    table(is.na(welfare$income))
    # FALSE  TRUE 
    # 4634 12030  NA가 12030건. 나중에 필터링으로 제거
    
    # 극단치 확인 / 이상치 확인
    boxplot(welfare$income)
    boxplot(welfare$income)$stats
    # [,1]
    # [1,]   0.0
    # [2,] 122.0
    # [3,] 192.5
    # [4,] 316.6
    # [5,] 608.0
    table(welfare$income)
    # 0 이거나 9999 는 이상치다.
    
    # 이상치는 결측치로 변경
    # 무응답/모름은 9999로 되어있으므로 NA로 변경해준다.
    welfare$income <- ifelse(welfare$income==c(0,9999),NA,welfare$income)
    
    table(is.na(welfare$income))
    # FALSE  TRUE 
    # 4628 12036 <- na가 증가했음.
    
    qplot(welfare$income)+xlim(0,1000)
    
    
    ###### 3. 분석하기. 성별에 따른 월급차이 
    welfare %>% filter(!is.na(income)) %>% 
      group_by(sex) %>%
      summarise(mean_income=mean(income))
    #   sex    mean_income
    #   <chr>        <dbl>
    # 1 female        163.
    # 2 male          312.
    
    ###### 4. 시각화 #변수에 담기
    sex_income <- welfare %>% filter(!is.na(income)) %>% 
      group_by(sex) %>%
      summarise(mean_income=mean(income))
    
    ggplot(data = sex_income, aes(x=sex, y=mean_income)) +
      geom_col()

     

    library(foreign) # SPSS 파일
    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)
    dim(welfare)
    str(welfare)
    summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    
    
    ########################### 나이와 월급의 차이를 분석하시오
    # 소득에 대한 이상치와 결측치 확인 및 처리
    # 데이터 형
    class(welfare$income)
    # "numeric"
    
    # 결측치 확인
    table(is.na(welfare$income))
    # FALSE  TRUE 
    # 4634 12030  NA가 12030건. 나중에 필터링으로 제거
    
    # 극단치 확인 / 이상치 확인
    boxplot(welfare$income)
    boxplot(welfare$income)$stats
    # [,1]
    # [1,]   0.0
    # [2,] 122.0
    # [3,] 192.5
    # [4,] 316.6
    # [5,] 608.0
    table(welfare$income)
    # 0 이거나 9999 는 이상치다.
    
    # 이상치는 결측치로 변경
    # 무응답/모름은 9999로 되어있으므로 NA로 변경해준다.
    welfare$income <- ifelse(welfare$income==c(0,9999),NA,welfare$income)
    
    table(is.na(welfare$income))
    # FALSE  TRUE 
    # 4628 12036 <- na가 증가했음.
    
    
    ##############################
    # 나이 - 시계열, 
    
    
    # 1) 데이터형
    class(welfare$birth)
    #"numeric"
    
    # 2) 빈도 측정
    table(welfare$birth)
    # 이상치 성인이하는 잘라야하지 않을까 - 16세 이하는 이상치로 자르기
    # 하려했는데 알아서 20살 미만은 걸러짐
    # welfare$birth <- ifelse(welfare$birth >= 2001, NA, welfare$birth )
    
    table(is.na(welfare$birth))
    # FALSE  TRUE 
    # 14620  2044 16세 미만은 NA로 자름
    
    # 이상치가 원래 있었다면
    welfare$bitrh <- ifelse(welfare$birth == 9999 |
                              welfare$birth < 1900 |
                              welfare$birth > 2014, NA, welfare$birth)
    
    # 나이 컬럼을 추가하자 : 생일을 이용해서 나이컬럼을 만든다
    welfare$age <- (2015 - welfare$birth) + 1
    
    #분석
    qplot(welfare$age)
    
    welfare %>% filter(!is.na(income)) %>% 
      group_by(age) %>%
      summarise(mean_income=mean(income))
    
    # 변수에 담기
    age_income <- welfare %>% filter(!is.na(income)) %>% 
      group_by(age) %>%
      summarise(mean_income=mean(income))
    
    # 시각화
    ggplot(data = age_income, aes(x=age, y=mean_income)) +
      geom_line()
    
    #############################################
    # 분석3 - 연령대별 월급 차이
    # 30미만은 young , 59이하는 middle, 나머지는 old 그룹으로 나눈다
    
    welfare$age <- (2015 - welfare$birth) + 1
    welfare$ages <- ifelse(welfare$age >60, "old",
                           ifelse(welfare$age > 30, "middle","young"))
    #또는
    welfare <- welfare %>% mutate(ages = ifelse(age<30,"young",
                                                ifelse (age<=59,"middle","old")))
    
    table(welfare$ages)
    # middle    old  young 
    # 6128   6072   4464
    
    #분석
    qplot(welfare$ages)
    
    welfare %>% filter(!is.na(income)) %>% 
      group_by(ages) %>%
      summarise(mean_income=mean(income))
    
    # 변수에 담기
    ages_income <- welfare %>% filter(!is.na(income)) %>% 
      group_by(ages) %>%
      summarise(mean_income=mean(income))
    
    # 시각화 순서넣음 scale_x_discreate() 지정안하면 알파벳순
    ggplot(data = ages_income, aes(x=ages, y=mean_income)) +
      geom_col() + scale_x_discrete(limit=c("young","middle","old"))

     

    library(foreign) # SPSS 파일
    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)
    dim(welfare)
    str(welfare)
    summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    
    # 나이
    welfare$age <- (2015 - welfare$birth) + 1
    # 연령대
    welfare <- welfare %>% mutate(ages = ifelse(age<30,"young",
                                                ifelse (age<=59,"middle","old")))
    
    
    #################################################
    
    
    head(welfare$ages) # 이전에 분석했던것이 살아있는지 확인
    table(welfare$sex)
    # welfare$sex <- ifelse(welfare$sex == 1, "male", "female")
    table(welfare$income)
    ### 이상치와 결측치는 이전에 처리되었다.
    
    ages_sex <- welfare %>% filter(!is.na(income)) %>% 
      group_by(ages,sex) %>%
      summarise(mean_income=mean(income))
    
    # 시각화 fill= 이중 그룹일때 색으로 구별함
    ggplot(data = ages_sex, aes(x=ages, y=mean_income, fill=sex)) +
      geom_col() +
      scale_x_discrete(limit=c("young","middle","old"))
    
    # 막대 그래프 분리
    ggplot(data = ages_sex, aes(x=ages, y=mean_income, fill=sex)) +
      geom_col(position = "dodge") +
      scale_x_discrete(limit=c("young","middle","old"))
    
    # 어디선가 꼬여서 잘안됨 나중에 수정

     

    library(foreign) # SPSS 파일
    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)
    # dim(welfare)
    # str(welfare)
    # summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    # 나이
    welfare$age <- (2015 - welfare$birth) + 1
    # 연령대
    welfare <- welfare %>% mutate(ages = ifelse(age<30,"young",
                                                ifelse (age<=59,"middle","old")))
    
    
    ####################################### 직업별 월급차이
    #데이터형
    class(welfare$code_job)
    # "numeric
    table(welfare$code_job) #150가지 직업군
    
    list_job <- read_excel("Koweps_Codebook.xlsx",
                           sheet = 2,col_names = T)
    head(list_job)
    #   code_job job                                
    #       <dbl> <chr>                              
    # 1      111 의회의원 고위공무원 및 공공단체임원
    # 2      112 기업고위임원                       
    # 3      120 행정 및 경영지원 관리자            
    # 4      131 연구 교육 및 법률 관련 관리자      
    # 5      132 보험 및 금융 관리자                
    # 6      133 보건 및 사회복지 관련 관리자
    
    dim(list_job) # 149   2
    
    # 직종코드가 코드화 되어있어서 파악하기 어려우므로 직업명을 같이사용할것
    
    welfare <- left_join(welfare, list_job, id='code_job')
    
    head(welfare$job) # NA가 섞여있음을 알수 있다.
    # [1] NA                                  
    # [3] "경비원 및 검표원"                  
    # [4] "전기공"                            
    # [6] "방문 노점 및 통신 판매 관련 종사자"
    
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income))
    # job                                mean_income
    # <chr>                                    <dbl>
    # 1 가사 및 육아 도우미                       80.2
    # 2 간호사                                   241. 
    # 3 건설 및 광업 단순 종사원                 190.
    
    #시각화
    ggplot(data = jobs_income, aes(x=job, y=mean_income))+
      geom_col()
    
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income)) %>%
      arrange(desc(mean_income)) %>% head(10) #내림차순10개
    
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col()
    # x축의 각 이름들이 너무길어서 확인하기 힘들다 -> 회전,피복->수평바 coord_flip()
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col() + coord_flip()
    
    #######################하위 10개 결과를 출력하고 그래프화
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income)) %>%
      arrange(mean_income) #올림차순
      head(10) # 10개
    
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col() + coord_flip() #수평바
    
    # 직종별로 색 채우기
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income,
                                   fill=job))+geom_col() + coord_flip() #수평바

     

    library(foreign) # SPSS 파일
    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)
    # dim(welfare)
    # str(welfare)
    # summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    # 나이
    welfare$age <- (2015 - welfare$birth) + 1
    # 연령대
    welfare <- welfare %>% mutate(ages = ifelse(age<30,"young",
                                                ifelse (age<=59,"middle","old")))
    # 성별
    welfare$sex <- ifelse(welfare$sex==1,"male","female")
    
    
    ####################################### 직업별 월급차이
    #데이터형
    class(welfare$code_job)
    # "numeric
    table(welfare$code_job) #150가지 직업군
    
    list_job <- read_excel("Koweps_Codebook.xlsx",
                           sheet = 2,col_names = T)
    head(list_job)
    #   code_job job                                
    #       <dbl> <chr>                              
    # 1      111 의회의원 고위공무원 및 공공단체임원
    # 2      112 기업고위임원                       
    # 3      120 행정 및 경영지원 관리자            
    # 4      131 연구 교육 및 법률 관련 관리자      
    # 5      132 보험 및 금융 관리자                
    # 6      133 보건 및 사회복지 관련 관리자
    
    dim(list_job) # 149   2
    
    # 직종코드가 코드화 되어있어서 파악하기 어려우므로 직업명을 같이사용할것
    
    welfare <- left_join(welfare, list_job, id='code_job')
    
    head(welfare$job) # NA가 섞여있음을 알수 있다.
    # [1] NA                                  
    # [3] "경비원 및 검표원"                  
    # [4] "전기공"                            
    # [6] "방문 노점 및 통신 판매 관련 종사자"
    
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income))
    # job                                mean_income
    # <chr>                                    <dbl>
    # 1 가사 및 육아 도우미                       80.2
    # 2 간호사                                   241. 
    # 3 건설 및 광업 단순 종사원                 190.
    
    #시각화
    ggplot(data = jobs_income, aes(x=job, y=mean_income))+
      geom_col()
    
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income)) %>%
      arrange(desc(mean_income)) %>% head(10) #내림차순10개
    
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col()
    # x축의 각 이름들이 너무길어서 확인하기 힘들다 -> 회전,피복->수평바 coord_flip()
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col() + coord_flip()
    
    #######################하위 10개 결과를 출력하고 그래프화
    jobs_income <- welfare %>% filter(!is.na(job) & !is.na(income)) %>%
      group_by(job) %>% #직업별
      summarise(mean_income=mean(income)) %>%
      arrange(mean_income) #올림차순
      head(10) # 10개
    
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income))+
      geom_col() + coord_flip() #수평바
    
    # 직종별로 색 채우기
    ggplot(data = jobs_income, aes(x=reorder(job,-mean_income), y=mean_income,
                                   fill=job))+geom_col() + coord_flip() #수평바
    
    ########################################### 성별 직업 빈도 dplyr 에서 빈도n()
    # 1. 남성 직업 빈도 상위 10개를 추출하고 출력하라
    welfare$sex <- ifelse(welfare$sex==1,"male","female")
    
    male_job <- welfare %>% filter(!is.na(job)& sex=="male") %>%
      group_by(job) %>%
      summarise(n=n()) %>%
      arrange(desc(n)) %>% head(10)
    # job                          n
    # <chr>                    <int>
    #   1 작물재배 종사자            640
    # 2 자동차 운전원              251
    # 3 경영관련 사무원            213
    # 4 영업 종사자                141
    
    # 눞히고 정렬, 색구별
    ggplot(data=male_job,aes(x=reorder(job, -n), y=n, fill=job))+
      geom_col() + coord_flip() 
    
    
    # 2. 여성 직업 빈도 상위 10개를 추출하고 출력하라
    welfare$sex <- ifelse(welfare$sex==1,"male","female")
    
    female <- welfare %>% filter(!is.na(job)& sex=="female") %>%
      group_by(job) %>%
      summarise(n=n()) %>%
      arrange(desc(n)) %>% head(10)
    # job                          n
    # <chr>                    <int>
    #   1 작물재배 종사자            640
    # 2 자동차 운전원              251
    # 3 경영관련 사무원            213
    # 4 영업 종사자                141
    
    # 눞히고 정렬, 색구별
    ggplot(data=female,aes(x=reorder(job, -n), y=n, fill=job))+
      geom_col() + coord_flip()

     

     

    library(foreign) # SPSS 파일
    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)
    # dim(welfare)
    # str(welfare)
    # summary(welfare)
    
    # 분석이 가능하도록 컬럼이름을 수정
    welfare <- rename(welfare,
                      sex = h10_g3, #성별
                      birth = h10_g4, #태어난연도
                      marriage = h10_g10, #혼인상태
                      religion = h10_g11, #종교
                      income = p1002_8aq1, #월급
                      code_job = h10_eco9, #직종코드
                      code_region = h10_reg7) #지역코드
    # 나이
    welfare$age <- (2015 - welfare$birth) + 1
    # 연령대
    welfare <- welfare %>% mutate(ages = ifelse(age<30,"young",
                                                ifelse (age<=59,"middle","old")))
    # 성별
    welfare$sex <- ifelse(welfare$sex==1,"male","female")
    # 종교유무
    welfare$religion <- ifelse(welfare$religion==1,"yes","no")
    ##########################################
    # 종교 유무에 따른 이혼율
    class(welfare$religion) # "numeric"
    table(welfare$religion)
    # 1있음2없음 
    # 8047 8617 
    class(welfare$marriage) #"numeric"
    table(welfare$marriage)
    # 0비해당1유2사별 3이혼4별거5미혼6기타 이상치없음
    # 2861 8431 2117  712   84 2433   26 
    table(is.na(welfare$marriage)) # NA없음
    
    # 참고) 종교 이상치 9 체크 및 전환
    welfare$religion <- ifelse(welfare$religion==9,NA,welfare$religion)
    # 결측치 체크
    table(is.na(welfare$religion))
    # 종교가 있으면 yes, 없으면 no 로 변경하시오. 두번실행하면 전부no됨
    welfare$religion <- ifelse(welfare$religion==1,"yes","no")
    table(welfare$religion)
    # no  yes 
    # 8617 8047 
    # 결혼은 1 marriage, 3은 divorce 로, 나머지는 NA로 처리하는 컬럼
    # group_marriage를 추가하라
    welfare$group_marriage <- ifelse(welfare$marriage==1,"marriage",
                             ifelse(welfare$marriage==3,"divorce",NA))
    
    table(welfare$group_marriage)
    qplot(welfare$group_marriage)
    
    # 종교 유무에 따른 이혼율 = 이혼/(이혼+결혼) *100
    welfare %>% filter(!is.na(group_marriage)) %>%
      group_by(religion,group_marriage) %>%
      summarise(n=n()) # 4가지 종류의 카운팅이된다
    # religion group_marriage     n
    # <chr>    <chr>          <int>
    # 1 no       divorce          384
    # 2 no       marriage        4218
    # 3 yes      divorce          328
    # 4 yes      marriage        4213
    
    welfare %>% filter(!is.na(group_marriage)) %>%
      group_by(religion, group_marriage) %>%
      summarise(n=n()) %>% #그룹별행의 갯수 카운트
      mutate(total_group=sum(n)) %>% # 2가지종류 (종교유무)
      mutate(divorce_rate=(n/total_group)*100)
    # 1 no       divorce          384        4602         8.34
    # 2 no       marriage        4218        4602        91.7 
    # 3 yes      divorce          328        4541         7.22
    # 4 yes      marriage        4213        4541        92.8 
    
    #종교유무 전체 결혼,이혼 비율
    rel_divorce <- welfare %>% filter(!is.na(group_marriage)) %>%
      group_by(religion, group_marriage) %>%
      summarise(n=n()) %>% #그룹별행의 갯수 카운트
      mutate(total_group=sum(n)) %>% # 2가지종류 (종교유무)
      mutate(divorce_rate=(n/total_group)*100)
    ###  시각화
    ggplot(data=rel_divorce, aes(x=religion, y=divorce_rate,
                                  fill=group_marriage)) +
      geom_col()
    
    # 종교가 있는 사람의 이혼율
    yes_rel <- welfare %>% filter(!is.na(group_marriage) & religion=="yes") %>%
      group_by(religion, group_marriage) %>%
      summarise(n=n()) %>% #그룹별행의 갯수 카운트
      mutate(total_group=sum(n)) %>% # 2가지종류 (종교유무)
      mutate(divorce_rate=(n/total_group)*100)
    # religion group_marriage     n total_group divorce_rate
    # <chr>    <chr>          <int>       <int>        <dbl>
    # 1 yes      divorce          328        4541         7.22
    # 2 yes      marriage        4213        4541        92.8 
    
    # 뽑아서 변수에 담아놓은 데이터를 그대로 이용할수있음 확인
    rel_divorce %>% filter(religion=="yes" & group_marriage=="divorce")
    rel_divorce %>% filter(religion=="yes")
    
    
    ggplot(data=yes_rel, aes(x=group_marriage, y=divorce_rate,
                             fill=group_marriage)) + geom_col()
    # 종교가 없는 사람의 이혼율
    no_rel <- welfare %>% filter(!is.na(group_marriage) & religion=="no") %>%
      group_by(religion, group_marriage) %>%
      summarise(n=n()) %>% #그룹별행의 갯수 카운트
      mutate(total_group=sum(n)) %>% # 2가지종류 (종교유무)
      mutate(divorce_rate=(n/total_group)*100)
    # religion group_marriage     n total_group divorce_rate
    # <chr>    <chr>          <int>       <int>        <dbl>
    # 1 no       divorce          384        4602         8.34
    # 2 no       marriage        4218        4602        91.7 
    
    
    ggplot(data=no_rel, aes(x=group_marriage, y=divorce_rate,
                             fill=group_marriage)) + geom_col()
    
    ### 종교 여부에 따른 이혼율
    div2 <- welfare %>% filter(!is.na(group_marriage)) %>%
      group_by(religion, group_marriage) %>%
      summarise(n=n()) %>% #그룹별행의 갯수 카운트
      mutate(total_group=sum(n)) %>% # 2가지종류 (종교유무)
      mutate(divorce_rate=(n/total_group)*100) %>%
      filter(group_marriage=="divorce")
    
    ggplot(data=div2, aes(x=religion, y=divorce_rate,
                             fill=religion)) + geom_col()

     

Designed by Tistory.