R 데이터 변환 정리글
- R
- 2024. 7. 31.
데이터 변환이란?
빅데이터 분석과정 중에서 데이터 변환은 정제된 데이터를 분석 목적에 맞게 만드는 과정을 말합니다. 그래서 데이터 변환 단계에서는 변수를 생성하거나 데이터 선택해 필요없는 데이터는 정리하면서 데이터 차원을 축소하는 작업을 하게 됩니다.
R을 통해서 데이터 변환 작업을 어떻게 하는지 알아보도록 하겠습니다.
데이터 타입변경
데이터의 타입 정리가 되어있지 않으면 머신러닝이나 딥러닝을 할때 방해가 될 수 있습니다. 반드시 타입변경을 해주어야 합니다. 데이터 타입 변경에 대한 내용은 아래 포스팅을 참고하시기 바랍니다.
변수 생성
새로운 변수를 생성하거나 기존 변수를 변형합니다. 예를 들어, 변수를 생성하는 경우는 대체적으로 이런 경우가 될 수 있습니다.
1) 비만지수(BMI)가 필요한데 데이터에는 키와 몸무게만 있는 경우
2) 날짜중에 연도나 날짜를 따로 추출해야하는 경우
3) 통계적 접근을 위해 평균, 표준편차, z-score가 필요한 경우
더 많이 있지만 세가지로만 축약합니다.
# 예제 1
data <- data.frame(
height_cm = c(170, 180, 160), # 키 (cm)
weight_kg = c(70, 80, 60) # 몸무게 (kg)
)
# BMI 계산
data$height_m <- data$height_cm / 100
data$BMI <- data$weight_kg / (data$height_m^2)
# 예제 2
# 패키지 설치 및 로드
install.packages("lubridate")
library(lubridate)
data <- data.frame(
date = as.Date(c('2023-07-31', '2024-01-01', '2025-12-25'))
)
# 연도 및 날짜 추출
data$year <- year(data$date)
data$day <- day(data$date)
# 예제 3
# 패키지 설치 및 로드
install.packages("dplyr")
library(dplyr)
data <- data.frame(
value = c(10, 20, 30, 40, 50)
)
# 평균 및 표준편차 계산
mean_value <- mean(data$value)
sd_value <- sd(data$value)
# Z-점수 계산
data <- data %>%
mutate(z_score = (value - mean_value) / sd_value)
데이터 스케일링
데이터 스케일링은 변수의 단위를 맙추는 과정입니다. kg과 g는 다른데 숫자상으로 똑같이 만들어버리면 컴퓨터에서는 진짜 똑같은 데이터라고 생각하게 됩니다. 또는, 어떤 숫자는 100만단위이고 어떤 것은 1만 단위라면 서로 비교조차 할 수가 없게 됩니다. 이런 경우 아예 머신러닝 학습이 되지 않습니다. 그에 맞는 스케일링을 해주어야 합니다.
이런 과정을 표준화라고 하는데 R에서는 scale()함수를 통해 데이터를 표준화할 수 있습니다.
scaled_data <- scale(data$A, center = TRUE, scale = TRUE)
데이터 필터링 및 정렬
보다 효율적인 데이터 사용을 위해서 데이터 필터와 정렬을 합니다. 데이터 필터는 기준에 부합한 데이터만 선택하는 것이고 데이터 정렬은 기준에 부합하게 정렬하는 것을 말합니다.
# 조건에 맞는 행 필터링
filtered_data <- data %>%
filter(A > 2)
# 열 A를 기준으로 정렬
sorted_data <- data %>%
arrange(A)
중복 데이터 처리
중복 데이터로 인해 모델 성능이 저하되거나 불필요한 영향을 줄 수 있습니다. 중복데이터를 확인하고 제거하도록 합니다.
# 중복된 행 확인
duplicates <- data[duplicated(data), ]
# 중복된 행 제거
unique_data <- data[!duplicated(data), ]
범주형 데이터 다루기
범주형 데이터는 팩터(factor)로써 처리합니다. 머신러닝 프로젝트를 진행할 때 라벨링 작업은 엄청난 노가다 작업이 됩니다. factor를 이용하면 라벨링 작업을 효율적으로 할 수 있습니다.
data$B <- factor(data$B, levels = c("a", "c", "d", "e", "missing"))
열 B를 팩터로 변환하고, 각 범주에 레벨을 지정해보았습니다.
마치며
주요 데이터 변환에 대해 알아보았습니다. 데이터를 깨끗하고 분석하기 쉬운 형태로 만들수록 모델 성능이 좋아지니 귀찮더라도 반드시 해야하는 단계입니다. 이번 포스팅에서는 대략적인 내용만 다루었고 자세한 내용은 내용이 정리되는대로 추가하겠습니다.
함께 보면 좋은 글
'R' 카테고리의 다른 글
R 새로운 열 추가 방법 총정리 (0) | 2024.08.03 |
---|---|
[R] dplyr 패키지를 이용한 손쉬운 데이터 조작 (0) | 2024.08.01 |
[R] 결측치 처리 (0) | 2024.07.30 |
[R] 데이터 타입 변경하기 (0) | 2024.07.29 |
R로 데이터 불러오기와 저장하기 (0) | 2024.07.26 |