R - 데이터 재구성: 초보자 가이드

안녕하세요, 미래의 R 프로그래머 여러분! 오늘 우리는 R에서 데이터 재구성의 세계에 흥미로운 여정을 떠납니다. 프로그래밍을 해 본 적이 없으신 걱정 마세요 - 저는 친절한 안내자가 되어, 단계별로 안내해 드릴게요. 이 튜토리얼이 끝나면, 프로처럼 데이터를 재구성할 수 있을 거예요!

R - Data Reshaping

데이터 재구성이란?

들어가기 전에, 데이터 재구성이到底是什么인지 이야기해 보겠습니다. 레고 블록이 많이 있는 걸 상상해 보세요. 데이터 재구성은 그 블록들을 다시 정리하여 다른 구조를 만드는 것과 같습니다. R에서 우리는 데이터를同样的 방식으로 다시 정리하여 분석에 더 유용하게 만듭니다.

이제 손으로 직접 예제를 보겠습니다!

데이터 프레임에서 열과 행 추가

열 추가

먼저 간단한 것부터 시작해 보겠습니다. 과일에 대한 정보가 담긴 데이터 프레임을 상상해 보세요:

fruits <- data.frame(
name = c("Apple", "Banana", "Cherry"),
color = c("Red", "Yellow", "Red")
)
print(fruits)

이 출력물을 얻습니다:

name  color
1  Apple    Red
2 Banana Yellow
3 Cherry    Red

이제 각 과일의 가격에 대한 새로운 열을 추가해 보겠습니다:

fruits$price <- c(0.5, 0.3, 0.7)
print(fruits)

이제 새로운 열이 추가되었습니다:

name  color price
1  Apple    Red   0.5
2 Banana Yellow   0.3
3 Cherry    Red   0.7

행 추가

새로운 과일을 목록에 추가하고 싶다면 어떻게 하나요? 이것도 할 수 있습니다!

new_fruit <- data.frame(name = "Date", color = "Brown", price = 0.6)
fruits <- rbind(fruits, new_fruit)
print(fruits)

이렇게 하면 다음과 같습니다:

name  color price
1  Apple    Red   0.5
2 Banana Yellow   0.3
3 Cherry    Red   0.7
4   Date  Brown   0.6

데이터 프레임 통합

이제 다른 데이터 프레임에 영양 정보가 있다고 가정해 봅시다:

nutrition <- data.frame(
name = c("Apple", "Banana", "Cherry", "Date"),
calories = c(52, 89, 50, 282)
)

# 두 데이터 프레임을 통합합니다
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)

이렇게 하면 다음과 같습니다:

name  color price calories
1  Apple    Red   0.5       52
2 Banana Yellow   0.3       89
3 Cherry    Red   0.7       50
4   Date  Brown   0.6      282

이렇게 하면 두 개의 다른 소스에서 정보를 하나의 종합적인 데이터 프레임으로 결합할 수 있습니다!

녹이기와 형상화

이제 더 고급 재구성 기술로 넘어가 보겠습니다. reshape2 패키지를 사용하겠으므로, 설치하고 로드해 두세요:

install.packages("reshape2")
library(reshape2)

데이터 녹이기

데이터를 녹이는 것은 얼음을 녹이는 것과 같습니다 - 모든 것이 유체가 되고 다시 형태를 바꿀 수 있습니다. fruit_info 데이터를 녹여 보겠습니다:

melted_fruits <- melt(fruit_info, id.vars = "name")
print(melted_fruits)

이렇게 하면 다음과 같습니다:

name variable  value
1   Apple    color    Red
2  Banana    color Yellow
3  Cherry    color    Red
4    Date    color  Brown
5   Apple    price   0.50
6  Banana    price   0.30
7  Cherry    price   0.70
8    Date    price   0.60
9   Apple calories  52.00
10 Banana calories  89.00
11 Cherry calories  50.00
12   Date calories 282.00

각 속성(색상, 가격, 칼로리)이 별도의 행으로 되어 있네요. 이는 특정 유형의 분석과 시각화에 매우 유용합니다.

녹인 데이터 형상화

이제 우리는 녹인 데이터를 새로운 형태로 다시 형상화할 수 있습니다. 과일을 열로, 속성을 행으로 하고 싶다고 가정해 봅시다:

casted_fruits <- dcast(melted_fruits, variable ~ name)
print(casted_fruits)

이렇게 하면 다음과 같습니다:

variable Apple Banana Cherry  Date
1    color   Red Yellow    Red Brown
2    price  0.50   0.30   0.70  0.60
3 calories 52.00  89.00  50.00 282.00

이렇게 하면 데이터 구조를 완전히 변환할 수 있습니다!

결론

축하합니다! 지금까지 R에서 데이터 재구성의 세계로 첫 걸음을 냈습니다. 레고로 만드는 것처럼, 중요한 것은 실험하고 자신에게 가장 적합한 구조를 찾는 것입니다. 이 함수들을 자유롭게 실험해 보세요 - 그게 진짜 배울 수 있는 방법입니다!

이제 우리가 다루었던 방법들의 빠른 참조 표를 제공합니다:

방법 함수 목적
열 추가 $ 또는 cbind() 데이터 프레임에 새로운 변수 추가
행 추가 rbind() 데이터 프레임에 새로운 관측치 추가
통합 merge() 다른 데이터 프레임의 데이터 결합
녹이기 melt() 넓은 데이터를 긴 형식으로 재구성
형상화 dcast() 긴 데이터를 넓은 형식으로 재구성

계속 연습하면 곧 마스터 스켈프트처럼 데이터를 재구성할 수 있을 것입니다! 행복한 코딩을 기원합니다!

Credits: Image by storyset