R - 외부데이터받아오기

2020. 9. 18. 22:36R

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# test4.R
# Koweps_hpc10_2015_beta1.sav
install.packages("foreign")
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)
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
  )
# 변수(열) 검토 전처리
# 변수 간 관계 분석 => 그래프
 
# 성별에 따른 월급 차이
# sex income
welfare %>% select(sex, income)
# 성별 변수 검토
class(welfare$sex) # "numeric"
table(welfare$sex)
# 이상치 확인
table(welfare$sex)
# 이상치 있으면 -> 결측치 변경
welfare$sex <- ifelse(welfare$sex == 9, NA, welfare$sex)
# 결측치 확인
table(is.na(welfare$sex))
# 1 "male"  2 "female" 변경
welfare$sex <- ifelse(welfare$sex == 1"male""female")
table(welfare$sex)
qplot(welfare$sex)
 
# 월급 변수 전처리
class(welfare$income)
summary(welfare$income)
qplot(welfare$income) + xlim(01000)
# 이상치 0,9999-> 결측치 NA 변경
welfare$income <-
  ifelse(welfare$income %in% c(09999), NA, welfare$income)
 
table(is.na(welfare$income))
 
sex_incom <- welfare %>% filter(!is.na(income)) %>% group_by(sex) %>%
  summarise(mean_incom = mean(income))
sex_incom
 
ggplot(data = sex_incom, aes(x = sex, y = mean_incom)) + geom_col()
 
# 나이와 월급
class(welfare$birth)
summary(welfare$birth)
 
table(is.na(welfare$birth))
# birth 9999
welfare$birth <- ifelse(welfare$birth == 9999, NA, welfare$birth)
table(is.na(welfare$birth))
 
# age 2015-birth+1
welfare$age <- 2015 - welfare$birth + 1
summary(welfare$age)
qplot(welfare$age)
 
# 나이에 따른 월급 평균표 만들기
age_income <-
  welfare %>% filter(!is.na(income)) %>% group_by(age) %>%
  summarise(mean_income = mean(income))
head(age_income)
 
ggplot(data = age_income, aes(x = age, y = mean_income)) + geom_line()
 
# 연령대 월급 차이
# 초년 30세 미만, 중년 30~59, 노년 60세 이상
# 열추가
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=mean(income))
# 막대그래프
ggplot(data=ageg_income,aes(x=ageg,y=mean_income))+geom_col()+scale_x_discrete(limits=c("young","middle","old"))
 
# 연령대 및 성별 월급평균 차이
#  그룹 ageg 연령대, sex 성별
ageg_sex_income <- welfare %>%
  filter(!is.na(income))  %>%
  group_by(ageg,sex) %>%
  summarise(mean_income=mean(income))
ageg_sex_income
 
ggplot(data=ageg_sex_income,aes(x=ageg,y=mean_income,fill=sex))+geom_col()+scale_x_discrete(limits=c("young","middle","old"))
 
ggplot(data=ageg_sex_income,aes(x=ageg,y=mean_income,fill=sex))+geom_col(position = "dodge")+scale_x_discrete(limits=c("young","middle","old"))
 
 
 
cs

xlim, ylim 으로 x축과 y축 값의 한계를 정해준다.

ifelse의 사용법은 ifelse(조건식, 참일 경우, 거짓일 경우)로 사용하면 된다.

'R' 카테고리의 다른 글

R - 데이터 결측치  (0) 2020.09.18
R - data.frame  (0) 2020.09.18
R - 변수선언  (0) 2020.09.18