Cách chuyển đổi khung dữ liệu trong R

Cach Chuyen Doi Khung Du Lieu Trong R



Chuyển đổi một tập dữ liệu là một trong những hoạt động như vậy nhằm cải tổ dữ liệu để đáp ứng các yêu cầu cụ thể của phân tích. Chuyển đổi tập dữ liệu liên quan đến việc đảo ngược các hàng và cột của tập dữ liệu, dẫn đến một tập dữ liệu mới với các cột và hàng được chuyển đổi. R cung cấp một số chức năng để chuyển đổi tập dữ liệu. Trong bài viết này, chúng tôi sẽ đề cập đến các phương pháp chuyển đổi khác nhau cho DataFrames trong R.

Ví dụ 1: Chuyển đổi khung dữ liệu bằng hàm T() trong R

Hàm t() là một hàm dựng sẵn của R được sử dụng để chuyển đổi DataFrame. Tuy nhiên, nó chuyển đổi DataFrame thành ma trận, do đó, bất kỳ cột không phải số nào cũng được chuyển đổi thành chuỗi ký tự. Hãy xem xét tập lệnh R sau để chuyển đổi DataFrame:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))

row.names(MyData) = c('r1','r2','r3','r4','r5')

t(Dữ liệu của tôi)

Ở đây, chúng tôi khai báo vectơ MyData và gán data.frame() cho nó. Chúng tôi chèn dữ liệu mẫu chứa ba cột có giá trị trong hàm data.frame(). Sau đó, chúng tôi sử dụng hàm “row.names()” và đặt tên hàng cho các giá trị của Khung dữ liệu “MyData”. Cuối cùng, chúng tôi chuyển đổi Khung dữ liệu “MyData” bằng cách sử dụng hàm t().



Đầu ra sau đây cho thấy sự chuyển vị của DataFrame trong đó tên hàng của DataFrame ban đầu trở thành tên cột của DataFrame được chuyển vị và tên cột của DataFrame ban đầu bị mất trong quá trình chuyển vị:







Ví dụ 2: Chuyển đổi khung dữ liệu bằng hàm Transpose() trong R

Hàm transpose() từ gói “data.table” cũng có thể được sử dụng để chuyển đổi DataFrame và nó trả về một DataFrame. Do đó, chúng tôi phải đảm bảo rằng “data.table” đã được cài đặt trong R. Nếu không tìm thấy thì chúng tôi có thể cài đặt nó bằng lệnh sau:

install.packages('data.table')

Giờ đây, chúng ta có thể dễ dàng nhập gói “data.table” để truy cập hàm transpose() trong R để chuyển đổi DataFrame. Hãy xem xét mã R sau đây trong đó hàm transpose() được gọi để chuyển đổi DataFrame:



df <- data.frame(A = c(1:5),

B = c(6:10),
C = c(11:15))


row.names(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Ở đây, chúng tôi tạo Khung dữ liệu “df” với ba cột và năm hàng trong đó mỗi cột chứa một chuỗi số lần lượt từ 1 đến 5, 6 đến 10 và 11 đến 15. Ngoài ra, chúng tôi gán tên hàng DataFrame bằng hàm row.names(). Sau đó, chúng tôi in DataFrame gốc ra bàn điều khiển.

DataFrame ban đầu được hiển thị trên màn hình tại đây:

Tiếp theo, chúng tôi chuyển đổi Khung dữ liệu “df” ban đầu bằng cách chuyển đổi các hàng và cột của Khung dữ liệu.

thư viện (data.table)

df_trans <- chuyển vị trí (df)

rownames(df_trans) <- colnames(df)

colnames(df_trans) <- rownames(df)

df_trans

Đối với điều này, trước tiên chúng tôi tải thư viện “data.table” cung cấp các công cụ để làm việc với dữ liệu dạng bảng trong R. Sau đó, hàm transpose() được sử dụng từ thư viện “data.table”. DataFrame được chuyển đổi kết quả được gán cho một biến mới là “df_t”. Sau đó, chúng tôi gán tên cột của Khung dữ liệu “df” ban đầu làm tên hàng cho Khung dữ liệu “df_trans” đã chuyển đổi bằng cách sử dụng hàm rownames(). Sau đó, tên hàng của Khung dữ liệu “df” ban đầu được gán làm tên cột cho Khung dữ liệu “df_trans” đã chuyển đổi bằng cách sử dụng hàm colnames().

Do đó, chuyển vị DataFrame ban đầu đạt được ở đầu ra. Nó đại diện cho từng ô trong DataFrame được chuyển vị, trong đó nó chứa cùng một giá trị với ô tương ứng trong DataFrame ban đầu nhưng ở một vị trí khác do chuyển vị.

Ví dụ 3: Chuyển đổi khung dữ liệu bằng hàm Tidyr Library Gather() trong R

Gói gọn gàng hơn của R có thể được sử dụng để chuyển đổi DataFrame. Phương pháp này hữu ích khi chúng tôi muốn chuyển đổi DataFrame từ định dạng rộng sang định dạng dài, sau đó quay lại định dạng rộng với các hàng và cột được hoán đổi. Nó cung cấp một số chức năng để biến đổi và sắp xếp lại dữ liệu. Trước đó, điều này chúng ta cần tải xuống cụ thể gói tittler bằng cách sử dụng lệnh sau:

install.packages('tidyr')

Hãy xem xét mã R sau đây. Chúng tôi sử dụng hàm thu thập () của gói này để chuyển đổi DataFrame rộng dài hơn:

thư viện (thu dọn)

n = 10

gọn gàng_df = data.frame(

ID = c(1:n),
Exam1_Marks = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Exam2_Marks = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Exam3_Marks = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

gọn gàng_df

Tại đây, một DataFrame “rộng” được chuyển đổi thành một DataFrame “dài” bằng cách sử dụng trình dọn dẹp. Đầu tiên, chúng tôi tạo một Khung dữ liệu “tidy_df” với ba cột. Mỗi cột này có 10 giá trị.

DataFrame dài được hiển thị trong màn hình đầu ra sau:

Sau đó, chúng tôi chuyển Khung dữ liệu “tidy_df” cho hàm thu thập() với toán tử đường ống “%>%”. Hàm thu thập () từ bộ dọn dẹp được sử dụng để chuyển đổi “tidy_df” thành một Khung dữ liệu dài. Hàm thu thập () lấy các đầu vào có tên 'Bài kiểm tra' cho biết một cột mới chứa các tên biến được tạo trong quá trình chuyển đổi. “Marks” chỉ định cột tập hợp “Exam1_Marks” và “Exam2_Marks” lại với nhau.

dài <- gọn gàng_df %>%

thu thập (Bài kiểm tra, Điểm,
Exam1_Marks:Exam2_Marks)


dài

Đầu ra hiển thị DataFrame dài cho bảng điều khiển hiện có định dạng 'dài' với ba cột:

Ví dụ 4: Chuyển đổi khung dữ liệu bằng hàm Pivot_Wider() trong R

Hàm nâng cao tiếp theo mà chúng tôi sử dụng để chuyển đổi DataFrame là hàm pivot_wider(). Pivot_wider() là một chức năng từ gói gọn gàng hơn trong R, cho phép chúng tôi chuyển đổi Khung dữ liệu “dài” thành Khung dữ liệu “rộng”. Hàm nhận ba đối số chính được thảo luận trong đoạn mã sau của R:

thư viện (thu dọn)

df <- data.frame(

id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
val = c(4, 5, 6, 7, 8, 9)


)

df

Ở đây, trước tiên chúng tôi tải gói gọn gàng bằng cách sử dụng hàm library(). Sau đó, chúng tôi đặt DataFrame mẫu trong “df”. Theo đó, Khung dữ liệu “df” có ba cột chứa các giá trị khác nhau. DataFrame mẫu có thể được nhìn thấy trong đầu ra sau:

Sau đó, hàm pivot_wider() từ thu gọn được sử dụng để chuyển đổi “df” thành “df_wide”.

df_wide <- pivot_wider(df, tên_từ = var, giá_trị_từ = val)

df_wide

Hàm pivot_wider() nhận ba đối số ở đây. Đầu tiên, phải chuyển đổi Khung dữ liệu “df”. Sau đó, đối số names_from đặt tên cột sẽ được sử dụng cho các tên biến mới. Cuối cùng, đối số value_from chỉ định tên cột sẽ được sử dụng cho các giá trị mới.

Đầu ra sau đây biểu thị sự chuyển vị của DataFrame dài thành DataFrame rộng:

Phần kết luận

Chúng tôi đã sử dụng nhiều cách khác nhau để chuyển đổi DataFrame trong R. Ví dụ đầu tiên được đặt bằng phương thức tích hợp sẵn t(). Tất cả các ví dụ khác cần các gói để nhập để chúng tôi có thể sử dụng các chức năng của chúng cho chuyển vị DataFrame. Tuy nhiên, phương pháp tốt nhất để sử dụng tùy thuộc vào tình huống cụ thể và cấu trúc dữ liệu mà bạn đang làm việc.