getwd() #현재 워킹 디렉토리 확인
## [1] "C:/RRR/movie"
setwd("C:/RRR/movie") #향후 워킹 디렉토리 설정
library(haven)
moviedata <- read_sav("C:/RRR/movie/moviedata.sav") #sav 파일 읽어오기
write.table(moviedata, file = "C:/RRR/movie/moviedata.csv" #읽어온 sav파일을 csv파일로 새롭게 저장하되
, sep = "," #새 데이터의 열 구분은 "," (csv파일이니깐)
, row.names = FALSE)
moviedata <- read.csv("C:/RRR/movie/moviedata.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, na.strings = "") #문자열을 factor로 읽지 않기
View(moviedata) #자료 제대로 들어왔나 보기
MD1 <- data.frame(moviedata)
class(MD1)
## [1] "data.frame"
library(purrr)
MD1 <- MD1 %>% map_if(is.factor, as.numeric)
#factor 변수들을 numeric 변수들로
MD1 <- MD1 %>% map_if(is.integer, as.numeric)
#integer 변수들을 numeric 변수들로
MD1 <- MD1 %>% map_if(is.character, as.numeric)
#character 변수들을 numeric 변수들로
str(MD1)
#잘 바뀌었나 확인
library(reshape)
MD1 <- rename(MD1, c("개인번호" = "pid"
, "DQ1.성별" = "r_gender"
, "DQ2.출생년도" = "r_birthyear"
, "연령" = "r_age"
, "혼인재구성1" = "r_marital"
, "DQ4.최종학력" = "r_educ"
, "직군재구성1" = "r_job"
, "경력년수1" = "r_career"
, "DQ9.직급1" = "r_jobclass"
, "DQ10.조합가입" = "r_union"
, "고용상태" = "r_employ"
, "X.39.현장및직장여성비율" = "r_womanratio"
, "X.413.하루평균근무시간" = "r_workinghour"
, "X.414.작품을통해번소득" = "r_income1"))
#"이전 이름" = "새 이름"
rename을 하면 data.frame이 list로 변환됨. 따라서 다시 data.frame으로 바꿔야함
MD1 <- data.frame(MD1)
class(MD1)
## [1] "data.frame"
View(MD1)
MD1$r_gender <- c(0, 1, NA)[match(MD1$r_gender, c(1, 2, NA))]
#기존 변수 gender에서 1, 2, NA에 맞춰서 새 변수에 0, 1, NA를 넣어라
MD1$r_gender <- factor(MD1$r_gender, level=c(0, 1), label=c("남성", "여성"))
summary(MD1$r_gender)
## 남성 여성 NA's
## 372 460 3
MD1$r_jobclass <- factor(MD1$r_jobclass, level=c(1:8), label=c("조직임원", "감독급/기사", "실장,팀장,1st"
, "2nd", "3rd이하", "수습, 인턴"
, "사원", "기타"))
summary(MD1$r_jobclass)
## 조직임원 감독급/기사 실장,팀장,1st 2nd 3rd이하
## 63 195 197 96 123
## 수습, 인턴 사원 기타 NA's
## 21 80 56 4
MD1$r_union <- c(1, 0, NA)[match(MD1$r_union, c(1, 2, NA))]
MD1$r_union <- factor(MD1$r_union, level=c(0, 1), label=c("노조없음", "노조있음"))
summary(MD1$r_union)
## 노조없음 노조있음 NA's
## 697 136 2
MD1$r_marital <- factor(MD1$r_marital, level=c(1:4), label=c("미/비혼", "기혼", "이혼/별거", "기타"))
summary(MD1$r_marital)
## 미/비혼 기혼 이혼/별거 기타 NA's
## 662 158 14 0 1
MD1$r_educ <- factor(MD1$r_educ, level=c(1:5), label=c("중졸이하", "고졸", "2-3년제 대졸", "4년제 대졸", "석사 이상"))
summary(MD1$r_educ)
## 중졸이하 고졸 2-3년제 대졸 4년제 대졸 석사 이상 NA's
## 2 131 134 449 116 3
MD1$r_employ <- factor(MD1$r_employ, level=c(1:5), label=c("독자제작", "사용자", "피고용자정규직", "피고용자비정규직", "기타"))
summary(MD1$r_employ)
## 독자제작 사용자 피고용자정규직 피고용자비정규직
## 256 21 84 426
## 기타 NA's
## 6 42
*우선 앞에서 cleaning한 주요 변수로 이루어진 새로운 데이터를 만들자
MD2 <- subset(MD1, select = c(r_age, r_birthyear, r_jobclass, r_union
,r_womanratio, r_workinghour, r_income1
,r_marital, r_educ, r_job, r_career, r_employ
, r_gender))
str(MD2)
## 'data.frame': 835 obs. of 13 variables:
## $ r_age : num 32 41 44 40 38 25 49 42 33 41 ...
## $ r_birthyear : num 1988 1979 1976 1980 1982 ...
## $ r_jobclass : Factor w/ 8 levels "조직임원","감독급/기사",..: 3 3 2 3 3 5 2 2 6 3 ...
## $ r_union : Factor w/ 2 levels "노조없음","노조있음": 2 1 1 1 1 1 1 1 1 1 ...
## $ r_womanratio : num 4 3 3 2 3 1 4 3 3 3 ...
## $ r_workinghour: num 999 12 18 11 13 12 8 8 8 8 ...
## $ r_income1 : num NA 3 NA 10 9 NA 10 6 NA 1 ...
## $ r_marital : Factor w/ 4 levels "미/비혼","기혼",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ r_educ : Factor w/ 5 levels "중졸이하","고졸",..: 2 4 5 1 4 3 4 2 2 4 ...
## $ r_job : num 5 4 4 6 1 3 8 8 3 2 ...
## $ r_career : num 7 13 19 20 14 3 21 21 11 3 ...
## $ r_employ : Factor w/ 5 levels "독자제작","사용자",..: 4 4 1 1 4 2 1 1 4 4 ...
## $ r_gender : Factor w/ 2 levels "남성","여성": 2 2 2 2 1 2 1 2 1 1 ...
class(MD1)
## [1] "data.frame"
View(MD2)
library(dplyr)
MD2 <- MD2 %>% mutate(gsrecog1 = (MD1$X.1.젠더인식1
+ MD1$X.1.젠더인식2
+ MD1$X.1.젠더인식3
+ MD1$X.1.젠더인식4
+ MD1$X.1.젠더인식5
+ MD1$X.1.젠더인식6
+ MD1$X.1.젠더인식7
+ MD1$X.1.젠더인식8)/8)
summary(MD2$gsrecog1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.000 1.375 1.499 1.875 3.125 4
MD2 <- MD2 %>% mutate(ocrecog1 = (MD1$X.2.조직문화평가1
+ MD1$X.2.조직문화평가2
+ MD1$X.2.조직문화평가3
+ MD1$X.2.조직문화평가4
+ MD1$X.2.조직문화평가5
+ MD1$X.2.조직문화평가6)/6)
summary(MD2$ocrecog1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 2.333 2.667 2.645 3.000 3.833 4
MD2 <- MD2 %>% mutate(ocrecog2 = (MD1$X.2.조직문화평가7
+ MD1$X.2.조직문화평가8
+ MD1$X.2.조직문화평가9
+ MD1$X.2.조직문화평가10)/4)
summary(MD2$ocrecog2)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.750 2.250 2.174 2.750 4.000 6
MD2 <- MD2 %>% mutate(ocexperi1 = (MD1$X.3.조직문화경험1
+ MD1$X.3.조직문화경험2
+ MD1$X.3.조직문화경험3)/3)
summary(MD2$ocexperi1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.000 1.333 1.559 2.000 4.667 6
MD2 <- MD2 %>% mutate(ocexperi2 = (MD1$X.3.조직문화경험4
+ MD1$X.3.조직문화경험5
+ MD1$X.3.조직문화경험6)/3)
summary(MD2$ocexperi2)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.000 1.000 1.357 1.333 4.667 6
MD2 <- MD2 %>% mutate(affirma1 = (MD1$X.4.조직문화인식2
+ MD1$X.4.조직문화인식3)/2)
summary(MD2$affirma1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 2.000 2.500 2.599 3.000 4.000 5
MD2 <- MD2 %>% mutate(scmt1 = (MD1$X.6.성희롱성폭력통념1
+ MD1$X.6.성희롱성폭력통념2
+ MD1$X.6.성희롱성폭력통념3
+ MD1$X.6.성희롱성폭력통념4)/4)
summary(MD2$scmt1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.250 1.750 1.671 2.000 3.500 7
MD2 <- MD2 %>% mutate(scmt2 = (MD1$X.6.성희롱성폭력통념6
+ MD1$X.6.성희롱성폭력통념7
+ MD1$X.6.성희롱성폭력통념8
+ MD1$X.6.성희롱성폭력통념9
+ MD1$X.6.성희롱성폭력통념10)/5)
summary(MD2$scmt2)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.000 1.200 1.316 1.600 3.000 5
나중에…
MD2 <- MD2 %>% mutate(assail_class1 = MD1$X.10.가해자직급1)
MD2$assail_class1<- factor(MD2$assail_class1, level=c(1:5), label=c("상급자", "동급자", "하급자", "거래처 직원 및 업계 관계자", "기타"))
summary(MD2$assail_class1)
## 상급자 동급자
## 205 53
## 하급자 거래처 직원 및 업계 관계자
## 5 25
## 기타 NA's
## 6 541
MD2 <- MD2 %>% mutate(assail_gender1 = MD1$X.12.가해자성별1)
MD2$assail_gender1<- factor(MD2$assail_gender1, level=c(1:2), label=c("남성", "여성"))
summary(MD2$assail_gender1)
## 남성 여성 NA's
## 270 28 537
MD2 <- MD2 %>% mutate(assail_age1 = MD1$X.13.가해자연령1)
MD2$assail_age1<- factor(MD2$assail_age1, level=c(1:5), label=c("20s", "30s", "40s", "50s", "모름"))
summary(MD2$assail_age1)
## 20s 30s 40s 50s 모름 NA's
## 57 88 110 34 9 537
MD2 <- MD2 %>% mutate(place1 = MD1$X.16.발생장소1)
MD2$place1<- factor(MD2$place1, level=c(1:10)
, label=c("촬영현장", "회식 등 술자리", "숙소 및 합숙장소"
,"회의나 미팅", "사무실", "출장, 외부미팅", "공동작업공간"
, "사적만남공간", "전화나 문자, 온라인", "기타"))
summary(MD2$place1)
## 촬영현장 회식 등 술자리 숙소 및 합숙장소 회의나 미팅
## 73 150 14 8
## 사무실 출장, 외부미팅 공동작업공간 사적만남공간
## 24 7 6 8
## 전화나 문자, 온라인 기타 NA's
## 2 5 538
MD2 <- MD2 %>% mutate(stage1 = MD1$X.17.발생단계1)
MD2$stage1<- factor(MD2$stage1, level=c(1:5)
, label=c("입문", "프리프로덕션", "프로덕션", "포스트프로덕션", "기타"))
summary(MD2$stage1)
## 입문 프리프로덕션 프로덕션 포스트프로덕션 기타
## 21 70 150 28 27
## NA's
## 539
MD2 <- MD2 %>% mutate(victim_wratio1 = MD1$X.19.발생조직여성비율)
MD2$victim_wratio1<- factor(MD2$victim_wratio1, level=c(1:6)
, label=c("10%미만", "10~30%", "30~50%", "50~70%", "70%이상","기타"))
summary(MD2$victim_wratio1)
## 10%미만 10~30% 30~50% 50~70% 70%이상 기타 NA's
## 53 107 88 25 16 5 541
MD2 <- MD2 %>% mutate(victim_repe1 = MD1$X.20.피해반복)
MD2$victim_repe1 <- factor(MD2$victim_repe1, level=c(1:4)
, label=c("1회", "2~3회", "많이 반복", "기타"))
summary(MD2$victim_repe1)
## 1회 2~3회 많이 반복 기타 NA's
## 133 114 44 5 539
MD2 <- MD2 %>% mutate(victim_respon1 = MD1$X.21.피해대처방법1)
MD2$victim_respon1 <- factor(MD2$victim_respon1, level=c(1:9)
, label=c("참고넘어감", "친구, 동료에게 개인적으로 이야기하고 넘어감"
, "가해자에게 개인적으로 사과 요구", "임원, 감독 등 상급자 보고"
, "영화계 전담 기구 통해 처리", "외부 기관 통해 처리",
"언론 제보 또는 SNS 게시", "경찰 신고", "기타"))
summary(MD2$victim_respon1)
## 참고넘어감
## 159
## 친구, 동료에게 개인적으로 이야기하고 넘어감
## 76
## 가해자에게 개인적으로 사과 요구
## 33
## 임원, 감독 등 상급자 보고
## 18
## 영화계 전담 기구 통해 처리
## 1
## 외부 기관 통해 처리
## 1
## 언론 제보 또는 SNS 게시
## 0
## 경찰 신고
## 0
## 기타
## 7
## NA's
## 540
MD2$serious1 <- c(4, 3, 2, 1, NA)[match(MD1$문27.성희롱성폭력실태인식1한국, c(1, 2, 3, 4, NA))]
MD2$serious2 <- c(4, 3, 2, 1, NA)[match(MD1$문27.성희롱성폭력실태인식2영화계, c(1, 2, 3, 4, NA))]
MD2$serious3 <- c(4, 3, 2, 1, NA)[match(MD1$문27.성희롱성폭력실태인식3조직, c(1, 2, 3, 4, NA))]
summary(MD2$serious1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 3.000 3.000 3.298 4.000 4.000 13
summary(MD2$serious2)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 3.000 3.000 2.974 3.000 4.000 18
summary(MD2$serious3)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 1.000 2.000 1.943 2.000 4.000 13
MD2 <- MD2 %>% mutate(contract1 = MD1$X.361.계약체결방식)
MD2$contract1 <- factor(MD2$contract1, level=c(1:5)
, label=c("제작사와 계약", "팀장과 계약", "하도급회사와 계약", "잘 모름", "기타"))
summary(MD2$contract1)
## 제작사와 계약 팀장과 계약 하도급회사와 계약 잘 모름
## 413 58 30 19
## 기타 NA's
## 5 310
MD2$r_womanratio <- factor(MD2$r_womanratio, level=c(1:6)
, label=c("10%미만", "10~30%", "30~50%", "50~70%", "70%이상","기타"))
summary(MD2$r_womanratio)
## 10%미만 10~30% 30~50% 50~70% 70%이상 기타 NA's
## 53 218 312 128 70 10 44
MD2 <- MD2 %>% mutate(findjob1 = MD1$X.40.구직경로1)
MD2$findjob1 <- factor(MD2$findjob1, level=c(1:7)
, label=c("공채/모집공고", "학교, 교수 소개", "학원 소개"
, "동료, 선후배, 아는사람", "가족, 친인척", "스탭 직업 교육", "기타"))
summary(MD2$findjob1)
## 공채/모집공고 학교, 교수 소개 학원 소개
## 245 102 16
## 동료, 선후배, 아는사람 가족, 친인척 스탭 직업 교육
## 378 17 20
## 기타 NA's
## 17 40
MD2 <- MD2 %>% mutate(metoopositive1 = (MD1$X.28.미투이후변화4조심하는분위기
+ MD1$X.28.미투이후변화5문제제기및공론화분위기
+ MD1$X.28.미투이후변화72차가해감소)/3) #변수 3개 합친거니깐 3으로 나눠서 1~4점 척도
MD2 <- MD2 %>% mutate(metoonegative1 = (MD1$X.28.미투이후변화1같이일하기기기피
+ MD1$X.28.미투이후변화2남성끼리회식
+ MD1$X.28.미투이후변화3분위기경직
+ MD1$X.28.미투이후변화6가해자여론재판
+ MD1$X.28.미투이후변화8미투조롱)/5)
summary(MD2$metoopositive1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 2.333 2.667 2.749 3.000 4.000 18
summary(MD2$metoonegative1)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 2.20 2.40 2.39 2.80 3.80 21
MD1$harrassment1 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년1, c(1, 2, NA))]
MD1$harrassment2 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년2, c(1, 2, NA))]
MD1$harrassment3 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년3, c(1, 2, NA))]
MD1$harrassment4 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년4, c(1, 2, NA))]
MD1$harrassment5 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년5, c(1, 2, NA))]
MD1$harrassment6 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년6, c(1, 2, NA))]
MD1$harrassment7 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년7, c(1, 2, NA))]
MD1$harrassment8 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년8, c(1, 2, NA))]
MD1$harrassment9 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년9, c(1, 2, NA))]
MD1$harrassment10 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년10, c(1, 2, NA))]
MD1$harrassment11 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년11, c(1, 2, NA))]
MD1$harrassment12 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년12, c(1, 2, NA))]
MD1$harrassment13 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년13, c(1, 2, NA))]
MD1$harrassment14 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년14, c(1, 2, NA))]
MD1$harrassment15 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년15, c(1, 2, NA))]
MD1$harrassment16 <- c(1, 0, NA)[match(MD1$X.71.직접피해경험2년16, c(1, 2, NA))]
MD2 <- MD2 %>% mutate(T_harrassment1 = ifelse ((MD1$harrassment1
+ MD1$harrassment2
+ MD1$harrassment3
+ MD1$harrassment4
+ MD1$harrassment5
+ MD1$harrassment6
+ MD1$harrassment7
+ MD1$harrassment8
+ MD1$harrassment9
+ MD1$harrassment10
+ MD1$harrassment11
+ MD1$harrassment12
+ MD1$harrassment13
+ MD1$harrassment14
+ MD1$harrassment15
+ MD1$harrassment16) >= 1, 1, 0))
MD2$T_harrassment1 <- factor(MD2$T_harrassment1, level=c(0, 1), label=c("없음", "있음"))
summary(MD2$T_harrassment1)
## 없음 있음 NA's
## 532 297 6
MD2 <- MD2 %>% mutate(T_harrassment2 = MD1$harrassment1
+ MD1$harrassment2
+ MD1$harrassment3
+ MD1$harrassment4
+ MD1$harrassment5
+ MD1$harrassment6
+ MD1$harrassment7
+ MD1$harrassment8
+ MD1$harrassment9
+ MD1$harrassment10
+ MD1$harrassment11
+ MD1$harrassment12
+ MD1$harrassment13
+ MD1$harrassment14
+ MD1$harrassment15
+ MD1$harrassment16)
summary(MD2$T_harrassment2)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.0000 0.0000 0.0000 0.9457 1.0000 14.0000 6
MD2 <- mutate(MD2, r_workinghour = ifelse(r_workinghour ==999, NA
, ifelse(r_workinghour ==9999, NA
, ifelse(r_workinghour==99999, NA
, r_workinghour))))
summary(MD2$r_workinghour)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 9.00 10.50 10.71 12.00 25.00 304
library(naniar)
class(MD2)
## [1] "data.frame"
a <-miss_var_summary(MD2)
View(a)
gg_miss_var(MD2) #위 결과를 그림으로 표현
gg_miss_var(MD2, show_pct = T) #퍼센트 그림으로 표현
save.image(file = "C:/RRR/movie/moviedata(210301).RData")
write.table(MD2, file = "C:/RRR/movie/MD2.csv"
, sep = "," #새 데이터의 열 구분은 "," (csv파일이니깐)
, row.names = FALSE)