겉바속촉
[가명처리] 금융정보 가명처리 본문
728x90
반응형
**R설치**
2021.06.22 - [IT 일기 (상반기)/가명처리] - [가명처리] R설치
**RSTUDIO설치**
2021.06.22 - [IT 일기 (상반기)/가명처리] - [가명처리] RStudio 설치
금융정보를 가명처리할 때에는
우선 가명처리 수준을 정의해주는 수준 정의표를 작성해야 합니다.
저는 다음과 같이 작성해주었어요.
이제 R로 돌아와서~
해당 파일에 header가 있는 지 확인해줍니다
변수가 있는 것을 알앗기 때문에 파일을 읽어올 때 header=T 넣어주도록 할게요:)
그래서 다음과 같이 입력해주었습니다.
setwd("C:/Kisa/data/Exercise")
df = read.csv("금융정보.csv", header=T)
그리고 실행시켰더니 다음과 같이 에러가 나네요?
다음과 같이 fileEncoding을 추가해줄게요
setwd("C:/Kisa/data/Exercise")
df = read.csv("금융정보.csv", header=T, fileEncoding='utf-8')
그럼 df가 생깁니다.
삭제해주기
setwd("C:/Kisa/data/Exercise")
df = read.csv("금융정보.csv", header=T, fileEncoding='utf-8')
library(dplyr)
df = select(df, -c(ID, Name, BirthDate))
5세 단위 범주화
setwd("C:/Kisa/data/Exercise")
df = read.csv("금융정보.csv", header=T, fileEncoding='utf-8')
library(dplyr)
df = select(df, -c(ID, Name, BirthDate))
df$AgeGRP = NA
df$AgeGRP = ifelse(df$Age < 20, '20-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 20 & df$Age <25,'25-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 25 & df$Age <30,'30-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 30 & df$Age <35, '35-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 35 & df$Age <40, '40-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 40 & df$Age <45, '45-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 45 & df$Age <50, '50-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 50 & df$Age <55, '55-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 55 & df$Age <60, '60-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 60 , '60+', df$AgeGRP)
범주화 시켜주었기 때문에
Age 컬럼은 삭제시켜주도록 할게요
다음 명령어를 넣어주면 되겠죠??
df = select(df, -c(Age))
그럼 다음과 같이 다시 컬럼이 7가지로 줄어들었습니다:)
특이정보 처리(범주형 변수)
이번에는 다음 코드를 추가시켜주었습니다.
국회의원 ---> 급여_공공 으로 고치겠다는 뜻입니다:)
df$Job = ifelse(df$Job=="국회의원", "급여_공공", df$Job)
table(df$Job)
그리고 Job의 테이블을 보면 국회의원이 6명이었기 때문에 급여_공공에 6명이 증가해야 하겠죠?
특이정보 처리(연속형 변수)
boxplot(df$Nodebt)
boxplot.stats(df$Nodebt)$out
result <- boxplot.stats(df$Nodebt)
result
df$Nodebt <- ifelse(df$Nodebt > 30, 30, df$Nodebt)
boxplot(df$Nodebt)
라운딩(천원단위)
boxplot(df$Income)
df$Income <- round(df$Income/10**3, digits = 0) * 10**3
boxplot(df$Overdue)
df$Overdue <- round(df$Overdue/10**2, digits = 0) * 10**2
boxplot(df$Income)
boxplot(df$Overdue)
우측 하단에 Plots을 클릭해보시면 다음과 같이 생성된 것을 볼 수 있습니다.
라운딩(정수화)
df$CreditScore <- round(df$CreditScore)
불러온 경로에 파일 저장하기
write.csv(df, file="금융정보_Pseudonymization.csv", row.names=FALSE, fileEncoding='utf-8')
다음과 같이 파일이 생성된 것을 확인할 수 있습니다.
전체 코드블럭
setwd("C:/Kisa/data/Exercise")
df = read.csv("금융정보.csv", header=T, fileEncoding='utf-8')
library(dplyr)
df = select(df, -c(ID, Name, BirthDate))
df$AgeGRP = NA
df$AgeGRP = ifelse(df$Age >= 20 & df$Age <25,'25-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 25 & df$Age <30,'30-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 30 & df$Age <35, '35-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 35 & df$Age <40, '40-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 40 & df$Age <45, '45-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 45 & df$Age <50, '50-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 50 & df$Age <55, '55-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 55 & df$Age <60, '60-', df$AgeGRP)
df$AgeGRP = ifelse(df$Age >= 60 , '60+', df$AgeGRP)
df = select(df, -c(Age))
table(df$Job)
df$Job = ifelse(df$Job=="국회의원", "급여_공공", df$Job)
table(df$Job)
boxplot(df$Nodebt)
boxplot.stats(df$Nodebt)$out
result <- boxplot.stats(df$Nodebt)
result
df$Nodebt <- ifelse(df$Nodebt > 30, 30, df$Nodebt)
boxplot(df$Nodebt)
# Rounding(천원단위)
boxplot(df$Income)
df$Income <- round(df$Income/10**3, digits = 0) * 10**3
boxplot(df$Overdue)
df$Overdue <- round(df$Overdue/10**2, digits = 0) * 10**2
boxplot(df$Income)
boxplot(df$Overdue)
# Rounding(정수화)
df$CreditScore <- round(df$CreditScore)
write.csv(df, file="금융정보_Pseudonymization.csv", row.names=FALSE, fileEncoding='utf-8')
728x90
반응형
'IT 일기 (상반기) > 가명처리' 카테고리의 다른 글
[머신러닝] 머신러닝 소개 (1) | 2021.06.24 |
---|---|
[가명처리] 의료정보 가명처리 (0) | 2021.06.22 |
[가명처리] R 사용해보기 (feat.카이제곱검정) (0) | 2021.06.22 |
[가명처리] R설치 (0) | 2021.06.22 |
[가명처리] RStudio 설치 (0) | 2021.06.22 |