Hướng dẫn cơ bản về Định dạng lại dữ liệu trong R

Xin chào các bạnfuture nhà lập trình R! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới định dạng lại dữ liệu trong R. Đừng lo lắng nếu bạn chưa bao giờ lập trình trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau từng bước. Cuối cùng của hướng dẫn này, bạn sẽ định dạng lại dữ liệu như một chuyên gia!

R - Data Reshaping

什么是数据重塑?

Trước khi chúng ta bắt đầu, hãy nói về việc định dạng lại dữ liệu thực sự có nghĩa là gì. Hãy tưởng tượng bạn có một đống lego. Định dạng lại dữ liệu giống như việc sắp xếp lại những mảnh lego để xây dựng các cấu trúc khác nhau. Trong R, chúng ta đang làm điều tương tự với dữ liệu của mình - tổ chức lại nó để nó trở nên hữu ích hơn cho việc phân tích.

Bây giờ, hãy bắt đầu với một số ví dụ thực hành!

Kết hợp các Cột và Hàng trong Data Frame

Thêm Cột

Hãy bắt đầu với điều đơn giản. Hãy tưởng tượng bạn có một data frame với thông tin về trái cây:

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

Điều này sẽ xuất ra:

name  color
1  Apple    Red
2 Banana Yellow
3 Cherry    Red

Bây giờ, hãy nói chúng ta muốn thêm một cột mới cho giá của mỗi loại trái cây:

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

Và voilà! Chúng ta đã thêm một cột mới:

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

Thêm Hàng

Vậy nếu chúng ta muốn thêm một loại trái cây mới vào danh sách của mình? Chúng ta cũng có thể làm được!

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

Điều này cho chúng ta:

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

Kết hợp Data Frames

Bây giờ, hãy tưởng tượng chúng ta có một data frame khác với thông tin dinh dưỡng:

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

# Kết hợp hai data frames
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)

Điều này sẽ cho chúng ta:

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

Thật tuyệt vời phải không? Chúng ta đã kết hợp thông tin từ hai nguồn khác nhau thành một data frame tổng quát!

Đun chảy và Đúc lại

Bây giờ, hãy chuyển sang một số kỹ thuật định dạng lại dữ liệu nâng cao. Chúng ta sẽ sử dụng gói reshape2, vì vậy hãy chắc chắn cài đặt và tải nó:

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

Đun chảy Dữ liệu

Đun chảy dữ liệu giống như việc đun chảy một khối băng - mọi thứ trở nên lỏng và có thể định hình lại. Hãy đun chảy dữ liệu fruit_info của chúng ta:

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

Điều này cho chúng ta:

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

Thấy sao? Mỗi thuộc tính (màu sắc, giá, calo) đã trở thành một hàng riêng biệt? Điều này rất hữu ích cho một số loại phân tích và trực quan hóa.

Đúc lại Dữ liệu

Bây giờ chúng ta đã đun chảy dữ liệu, chúng ta có thể đúc nó thành một hình dạng mới. Hãy tưởng tượng chúng ta muốn có trái cây làm cột và thuộc tính làm hàng:

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

Điều này cho chúng ta:

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

Impressive, right? Chúng ta đã hoàn toàn thay đổi cấu trúc dữ liệu của mình!

Kết luận

Chúc mừng! Bạn đã刚刚 bước vào thế giới định dạng lại dữ liệu trong R. Nhớ rằng, giống như việc xây dựng với lego, chìa khóa là thử nghiệm và tìm ra cấu trúc phù hợp nhất cho nhu cầu của bạn. Đừng sợ hãi khi thử nghiệm các hàm này - đó là cách bạn sẽ thực sự học được!

Dưới đây là bảng tham khảo nhanh các phương pháp chúng ta đã bao gồm:

Phương pháp Hàm Mục đích
Thêm Cột $ hoặc cbind() Thêm các biến mới vào data frame
Thêm Hàng rbind() Thêm các quan sát mới vào data frame
Kết hợp merge() Kết hợp dữ liệu từ các data frames khác nhau
Đun chảy melt() Định dạng lại dữ liệu rộng thành định dạng dài
Đúc lại dcast() Định dạng lại dữ liệu dài thành định dạng rộng

Tiếp tục thực hành, và sớm bạn sẽ định dạng dữ liệu như một nghệ sĩ điêu khắc master! Chúc bạn may mắn với việc lập trình!

Credits: Image by storyset