겉바속촉

[가명처리] 금융정보 가명처리 본문

IT 일기 (상반기)/가명처리

[가명처리] 금융정보 가명처리

겉바속촉 2021. 6. 22. 16:18
728x90
반응형

 

 

**R설치**

 

2021.06.22 - [IT 일기 (상반기)/가명처리] - [가명처리] R설치

 

[가명처리] R설치

R을 설치해보도록 하겠습니다:) 다음 링크로 가주세요~ https://www.r-project.org/ R: The R Project for Statistical Computing www.r-project.org Download 에 CRAN을 클릭 Korea의 아무거나 클릭 각자의 운..

2-juhyun-2.tistory.com

 

 

**RSTUDIO설치**

 

2021.06.22 - [IT 일기 (상반기)/가명처리] - [가명처리] RStudio 설치

 

[가명처리] RStudio 설치

RStudio를 설치해보도록 하겠습니다. 다음 링크로 가주세요~ https://www.rstudio.com/products/rstudio/download/#download Download the RStudio IDE RStudio is a set of integrated tools designed to help yo..

2-juhyun-2.tistory.com

 

 

 

 

금융정보를 가명처리할 때에는

우선 가명처리 수준을 정의해주는 수준 정의표를 작성해야 합니다.

 

저는 다음과 같이 작성해주었어요.

 

 

 

 

이제 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
반응형