Chuyển đến nội dung chính

Cách Chuyển Vị Ma Trận trong R: Hướng Dẫn Nhanh

Tìm hiểu ba cách để chuyển vị (transpose) một ma trận trong R trong hướng dẫn nhanh này

Khám phá cùng AI

Chuyển vị ma trận là một thao tác xử lý dữ liệu thường gặp trong môi trường lập trình R. Trong hướng dẫn này, tôi sẽ chỉ bạn cách chuyển vị ma trận hiệu quả trong R, giới thiệu một số phương pháp để thực hiện tác vụ này. Hãy bắt đầu nhé!

Câu trả lời nhanh: Cách chuyển vị ma trận trong R

Nếu bạn đang vội, đây là cách nhanh nhất để chuyển vị ma trận trong R: dùng hàm t(). Hàm t() là một phần của base R và cung cấp cách chuyển vị tức thì cho ma trận. Đây là một ví dụ đơn giản:

# Creating a sample matrix
my_matrix <- matrix(1:6, nrow = 2, ncol = 3)
print(my_matrix)
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# Transposing the matrix
transposed_matrix <- t(my_matrix)
print(transposed_matrix)
      [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

Chuyển vị là gì?

Chuyển vị ma trận là hoán đổi các hàng và cột của nó, biến dữ liệu theo hàng thành dữ liệu theo cột và ngược lại. Thao tác này thường được dùng trong xử lý dữ liệu để tái cấu trúc bộ dữ liệu, giúp phù hợp hơn cho các phân tích hoặc trực quan hóa cụ thể. Chẳng hạn, hãy xem xét một ma trận chứa nhiệt độ hằng ngày cho các thành phố khác nhau. Chuyển vị khung dữ liệu này sẽ hoán đổi các hàng (ngày) với các cột (thành phố), từ đó có thể đơn giản hóa các bước tiếp theo như vẽ biểu đồ hoặc phân tích thống kê.

Ngày

New York

Lost Angeles

Chicago

Ngày 1

22

25

18

Ngày 2

20

28

21

Một bộ dữ liệu thời tiết mẫu ở 3 thành phố trước khi chuyển vị

Thành phố

Ngày 1

Ngày 2

New York

22

20

Los Angeles

25

28

Chicago

18

21

Một bộ dữ liệu thời tiết mẫu ở 3 thành phố sau khi chuyển vị

Ba phương pháp chuyển vị ma trận trong R

Với ma trận nhiệt độ hằng ngày cho các thành phố khác nhau, hãy khám phá cách chuyển vị ma trận này bằng nhiều phương pháp trong R.

Phương pháp #1: Chuyển vị ma trận trong R bằng Base R

Phương pháp đơn giản nhất để chuyển vị ma trận trong R là sử dụng hàm t() của base R, như đã minh họa ở trên. Cách này hiệu quả, trực tiếp và là lựa chọn ưu tiên khi cần chuyển vị nhanh mà không cần gói bổ sung.

# Assume that temparature_matrix is already predefined
print(temperature_matrix)
      New_York Los_Angeles Chicago
Day 1       22          20      25
Day 2       28          18      21
# Transpose temperature_matrix
transposed_matrix <- t(temperature_matrix)

print(transposed_matrix)
            Day 1 Day 2
New_York      22    28
Los_Angeles   20    18
Chicago       25    21

Phương pháp #2: Chuyển vị ma trận trong R bằng tidyverse

tidyverse là một bộ công cụ mạnh mẽ trong R, giúp làm việc với dữ liệu hiệu quả và nhất quán. Mặc dù tidyverse thường dùng với data frame, bạn có thể chuyển đổi ma trận thành data frame rồi dùng tidyr để “chuyển vị” bằng cách xoay trục (pivot). Điều này đặc biệt hữu ích nếu bạn đã dùng tidyverse để phân tích dữ liệu.

library(tidyr)
library(dplyr)
library(tibble)

# Converting the matrix to a data frame for tidyverse manipulation
temperature_df <- as.data.frame(temperature_matrix)

# "Transposing" the matrix by converting to long then wide format
transposed_df <- temperature_df %>%
  rownames_to_column(var = "Day") %>%
  pivot_longer(-Day, names_to = "City", values_to = "Temperature") %>%
  pivot_wider(names_from = City, values_from = Temperature)

print(transposed_df)
# A tibble: 2 × 4
  Day   New_York Los_Angeles Chicago
  <chr>    <dbl>       <dbl>   <dbl>
1 Day 1       22          20      25
2 Day 2       28          18      21

Phương pháp #3: Chuyển vị ma trận trong R bằng data.table

Tương tự cách tiếp cận với tidyverse, data.table có thể làm việc với data frame hoặc data table. Dưới đây là cách bạn có thể chuyển vị một ma trận bằng cách chuyển nó thành data table trước:

library(data.table)

# Converting the matrix to a data.table
temperature_dt <- as.data.table(temperature_matrix, keep.rownames = "Day")

# Transposing the matrix by melting and dcasting (similar to pivot_longer and pivot_wider)
transposed_dt <- melt(temperature_dt, id.vars = "Day") %>%
  dcast(variable ~ Day, value.var = "value")

print(transposed_dt)
      variable Day 1 Day 2
1:    New_York    22    28
2: Los_Angeles    20    18
3:     Chicago    25    21

Lời kết

Chuyển vị ma trận là một kỹ năng nền tảng trong lập trình R. Dù bạn làm việc với base R, tidyr trong tidyverse, hay gói data.table, R cung cấp các lựa chọn linh hoạt để đáp ứng nhu cầu dữ liệu của bạn. Nếu muốn tìm hiểu thêm, hãy xem Cheat Sheet Reshaping Data với tidyr trong R, hoặc bắt đầu với Lộ trình Kỹ năng Data Manipulation in R.

Adel Nehme

Tác giả

Adel Nehme

Adel là một nhà giáo dục Khoa học Dữ liệu, diễn giả, và Phó Chủ tịch phụ trách Truyền thông tại DataCamp. Adel đã phát hành nhiều khóa học và buổi đào tạo trực tiếp về phân tích dữ liệu, học máy và kỹ thuật dữ liệu. Anh đam mê lan tỏa kỹ năng dữ liệu và hiểu biết dữ liệu trong toàn tổ chức, cũng như những điểm giao thoa giữa công nghệ và xã hội. Anh có bằng Thạc sĩ Khoa học Dữ liệu và Phân tích Kinh doanh. Thời gian rảnh, bạn có thể bắt gặp anh vui đùa cùng chú mèo Louis.

Chủ đề

Liên quan