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!
什么是数据重塑?
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