Hướng dẫn R này là tất cả về bảng dự phòng trong R. Trước hết, chúng ta sẽ thảo luận về việc giới thiệu bảng dự phòng R và các cách khác nhau để tạo bảng dự phòng trong R. Và, sau khi hoàn thành hướng dẫn này, bạn sẽ hiểu kỹ về các bảng / phẳng phức tạp bảng, lập bảng chéo và tạo lại dữ liệu gốc từ các bảng dự phòng trong R.
Bảng dự phòng trong R là gì?
Một bảng dự phòng đặc biệt hữu ích khi một số lượng lớn các quan sát cần được cô đọng thành một định dạng nhỏ hơn trong khi bảng phức tạp (phẳng) là một loại bảng dự phòng được sử dụng khi chỉ tạo một bảng duy nhất thay vì nhiều bảng.
Bạn có thể thao tác, thay đổi và tạo các đối tượng bảng bằng cách sử dụng lệnh table () để tóm tắt một mẫu dữ liệu bao gồm các đối tượng vectơ, ma trận, danh sách và khung dữ liệu . Bạn cũng có thể tạo một vài loại đối tượng bảng đặc biệt, như bảng dự phòng và bảng dự phòng (phẳng) phức tạp bằng cách sử dụng lệnh table ().
Ngoài ra, bạn cũng có thể sử dụng lập bảng chéo để tập hợp lại dữ liệu thành định dạng bảng, theo yêu cầu.
Lập bảng dự phòng trong R
Bảng dự phòng là một cách để vẽ lại dữ liệu và tập hợp nó thành một bảng. Và, nó hiển thị bố cục của dữ liệu gốc theo cách cho phép người đọc có được bản tóm tắt tổng thể về dữ liệu gốc. Lệnh table () có thể được sử dụng để tạo các bảng dự phòng trong R vì lệnh có thể xử lý dữ liệu trong các vectơ đơn giản hoặc các đối tượng ma trận và khung dữ liệu phức tạp hơn. Dữ liệu gốc càng phức tạp thì bảng kết quả dự phòng càng phức tạp.
Xem thêm Sử dụng tính toán Vector trong R
Tạo Bảng dự phòng từ Vectors trong R
Vector là đối tượng dữ liệu đơn giản nhất mà từ đó bạn có thể tạo một bảng dự phòng. Trong ví dụ sau, bạn có một vectơ số đơn giản của các giá trị.
> vec = c(3,5,7,9,11,3,6,2,1,9,0,5,4) > table(vec) > sort(vec)
Với sự trợ giúp của lệnh sort (), chúng ta có thể có được một tập hợp các giá trị dữ liệu được sắp xếp lại. Chúng ta cũng có thể so sánh các giá trị đã sắp xếp với kết quả thu được khi áp dụng lệnh table () cho nó.
Tạo bảng dự phòng R từ dữ liệu
Trong phần này, chúng tôi sẽ giải thích một ví dụ đơn giản cung cấp một khung dữ liệu chứa các giá trị số trong một cột và cũng chứa các yếu tố trong hai cột của nó. Hai cột yếu tố này chứa các biến ký tự.
Để tạo bảng dự phòng từ dữ liệu, chúng tôi sẽ sử dụng table (), addmargins (), as.data.frame.matrix () và prop.table (). Trong ví dụ sau, hàm table () trả về một bảng dự phòng. Về cơ bản, nó trả về một kết quả dạng bảng của các biến phân loại.
library(dplyr) toy_data = data.frame(c1 = sample(letters[1:5], 25, replace = TRUE), c2 = sample(LETTERS[1:5], 25, replace = TRUE)) print.data.frame(toy_data) table0 <- table(toy_data$c1, toy_data$c2) print.table(table0) table1 <- as.data.frame.matrix(table0) # convert it to dataframe print.data.frame(table1) table2 <- prop.table(table0, margin = 1) %>% as.data.frame.matrix() # convert it to dataframe # have a look at the table print.data.frame(table2, digits = 2) table3 <- prop.table(table0, margin = 2) %>% as.data.frame.matrix() # convert it to dataframe # have a look at the table print.data.frame(table3, digits = 2)
Chúng tôi nhận được kết quả sau:
Xem thêm Hướng dẫn Table Layout trong android
Làm thế nào để tạo bảng dự phòng tùy chỉnh trong R?
Bảng dự phòng trong R chỉ có thể được tạo bằng cách sử dụng một phần dữ liệu, ngược lại với việc thu thập dữ liệu từ tất cả các hàng và cột. Trong những tình huống như thế này, chúng ta có thể thực hiện lựa chọn từng hàng và cột sẽ được sử dụng.
Bạn có thể tạo bảng dự phòng tùy chỉnh trong R bằng các cách sau:
- Thực hiện chọn cột để sử dụng trong bảng dự phòng.
- Thực hiện lựa chọn các hàng sẽ được sử dụng.
- Thực hiện luân chuyển các khung dữ liệu.
- Sử dụng các đối tượng dữ liệu.
- Sử dụng khung dữ liệu.
Chúng ta sẽ tìm hiểu về từng điều này một cách chi tiết dưới đây:
Chọn các cột để sử dụng trong bảng dự phòng R
Với sự trợ giúp của lệnh table (), chúng ta có thể chỉ định các cột mà bảng dự phòng có thể được tạo. Để làm như vậy, bạn chỉ cần đề cập đến tên của các đối tượng vector như sau:
table(table1$A)
Điều này cũng có thể được viết là:
table(table1[,1])
Chúng tôi nhận được kết quả đầu ra sau khi chúng tôi chạy các lệnh này trong RStudio của mình:
Chọn hàng để sử dụng trong bảng dự phòng R
Các hàng là cơ sở của bảng dự phòng. Để chỉ chọn một số hàng nhất định, một cách tiếp cận khác phải được điều chỉnh. Quá trình này yêu cầu tạo một đối tượng có dạng ma trận mà qua đó bạn có thể lấy được một bảng dự phòng bằng cách sử dụng các hàng có trong khung dữ liệu của bảng dự phòng.
Xoay khung dữ liệu trong R
Bạn có thể thực hiện xoay dữ liệu, tức là chuyển vị dữ liệu bằng lệnh t () . Điều này có thể được thực hiện như sau:
t(table1)
Chúng tôi nhận được kết quả sau cho bảng chuyển đổi ‘table1’:
Tạo bảng dự phòng từ các đối tượng ma trận trong R
Đối với phần này, chúng tôi sẽ tạo ma trận dữ liệu quan sát chim của chúng tôi như sau:
bird = matrix( c(47, 10, 40, 2, 5, 2, 19, 3, 5, 0, 2, 50, 0, 10, 7, 0, 46, 8, 4, 0, 9, 4, 0, 0, 2, 4 ,0, 6, 0,0), nrow=6, ncol=5,byrow = TRUE) # fill matrix by rows dimnames(bird) = list( c("Blackbird", "Chaffinch", "Great Tit", "House Sparrow", "Robin", "Song Thrush"), # row names c("Garden", "Hedgerow", "Parkland", "Pasture", "Woodland")) #Column names
Ma trận “con chim” của chúng tôi trông giống như:
Sử dụng lệnh table () , bạn sẽ nhận được kết quả, hiển thị trong bảng sau:
>table(bird)
Sử dụng các hàng của khung dữ liệu trong bảng dự phòng
Với sự trợ giúp của ma trận này, bạn có thể tạo một bảng dự phòng bằng cách xem xét các hàng. Tuy nhiên, nếu có một khung dữ liệu, điều tương tự không thể được thực hiện với việc sử dụng quy ước dấu ngoặc.
Bạn có thể làm cho nó hoạt động như sau:
table(as.matrix(bird)[1,], as.matrix(bird)[2,], dnn = c("Garden", "Hedgerow"))
Hơn nữa, một ma trận mới cũng có thể được tạo trên đó áp dụng lệnh table () như sau:
bird.mat = as.matrix(bird) table(bird.mat[1,], bird.mat[4,], dnn = c("Garden", "Hedgerow"))
Xem thêm Đọc file CSV, JSON, XLSX bằng Python
Chọn các phần của đối tượng bảng R
Trong R, loại ma trận đặc biệt là một bảng. Giống như xử lý các đối tượng ma trận, bạn cũng có thể xử lý các bảng. Điều này cũng bao gồm việc trích xuất các đối tượng ma trận tương tự như trích xuất đối tượng bảng.
Dưới đây một số lệnh được liệt kê để chọn các phần của một đối tượng bảng:
> str (pw.tab) – Kiểm tra cấu trúc của đối tượng bảng có tên là tab.
> pw.tab [1: 3,] – Hiển thị ba hàng đầu tiên của bảng dự phòng.
> pw.tab [1: 3,1] – Hiển thị ba hàng đầu tiên của cột đầu tiên.
> pw.tab [1: 3,1: 2] – Hiển thị ba hàng đầu tiên của cột đầu tiên và cột thứ hai.
> pw.tab [, ‘hi’] – Hiển thị cột có nhãn hi.
> pw.tab [1: 3, c (‘hi’, ‘mid’)] – Hiển thị ba hàng đầu tiên của hai trong số các cột.
> pw.tab [1: 3, c (‘mid’, ‘hi’)] – Hiển thị một số cột theo thứ tự mới.
> pw.tab [, c (‘hi’, 3)] – Hiển thị hai cột sử dụng kết hợp tên và số.
> length (pw.tab) – Hiển thị chiều dài của đối tượng bảng.
Bước đầu tiên là tạo đối tượng bảng bằng cách sử dụng hai trong số các cột để tạo ra một bảng dự phòng đơn giản. Lệnh str () xác nhận rằng đối tượng kết quả là một bảng. Bảng có thể được hiển thị giống như một ma trận bằng cách sử dụng dấu ngoặc vuông để xác định các hàng và cột theo yêu cầu. Các hàng và cột có thể được chỉ định dưới dạng số hoặc tên (nếu thích hợp), nhưng bạn không thể trộn tên và số trong cùng một lệnh.
Lệnh length () cho kết quả phản ánh số lượng mục trong bảng; điều này tương tự như một ma trận nhưng khác với một khung dữ liệu (trong đó lệnh tạo ra một số cột).
Chuyển đổi một đối tượng thành một bảng
Như đã đề cập ở trên, bảng là một kiểu đối tượng dữ liệu đặc biệt tương tự như ma trận nhưng cũng có một số điểm khác biệt.
Chúng tôi sử dụng lệnh as.table () để chuyển đổi một đối tượng thành một bảng. Tuy nhiên, điều này chỉ hợp lệ nếu đối tượng ở dạng ma trận. Trong trường hợp là một khung dữ liệu, đối tượng có thể được chuyển đổi thành ma trận và sau đó nó có thể được chuyển đổi thành bảng. Chúng ta sẽ làm tương tự trong R như sau:
> as.table(as.matrix(bird))
Kiểm tra đối tượng bảng R
Để xác nhận đối tượng có thuộc kiểu bảng hay không, chúng ta sử dụng lệnh is.table () . Kết quả của lệnh này là Boolean, tức là chúng ta sẽ nhận được TRUE hoặc FALSE.
> is.table(bird) > is.table(table0)
Xem thêm Định dạng dữ liệu trong R
Bảng phức tạp / Bảng phẳng trong R
Một số hàng và cột được chia nhỏ để tạo thành một bảng. Điều này xảy ra trong một bàn phẳng. Chúng ta có thể tạo tương tự bằng lệnh table () thay thế. Lệnh ftable () có thể được sử dụng theo nhiều cách khác nhau như:
- Để xây dựng một bảng dự phòng “phẳng” trong R, chúng ta có thể sử dụng lệnh ftable ().
- Bạn cũng có thể tạo bảng “Phẳng” chọn lọc trong R.
Lập bảng dự phòng “phẳng” trong R
Bảng dự phòng “phẳng” trong R có thể được tạo bằng lệnh ftable () như sau:
ftable(toy_data)
Chúng ta cũng có thể tạo bảng dự phòng trong R với sự trợ giúp của lệnh table (). Chúng tôi cũng có thể chỉ định hai hoặc nhiều cột sẽ được sử dụng trong một bảng. Để có được đầu ra tùy chỉnh hơi khác, chúng ta có thể sử dụng một cú pháp khác. Dạng chung của lệnh là: ftable (column.items ~ row.items, data = data.object)
Tự hỏi ký tự dấu ngã (~) này có nghĩa là gì? Nó được sử dụng để tạo công thức ở những nơi mà phía bên trái của biểu tượng chứa các biến ở dạng tiêu đề hàng được phân tách bằng dấu phẩy. Tên của các vectơ cũng tạo thành các mục hàng. Trước biểu mẫu ~ là đặc điểm kỹ thuật cột trong khi ở bên phải, có các nhóm của bảng theo thứ tự đặc điểm kỹ thuật.
Kiểm tra đối tượng bảng phẳng R
Để hiểu loại đối tượng đang được xử lý, chúng ta sử dụng lệnh class (). Lệnh này cung cấp một nhãn duy nhất cho từng loại đối tượng. Với đặc tả lớp của đối tượng, R có khả năng xác định loại đối tượng và cũng chỉ định lớp của nó.
Lệnh bạn có thể sử dụng để kiểm tra các đối tượng phẳng như sau:
if(class(table1) == 'ftable') TRUE else FALSE
Trong lệnh trên, lớp của đối tượng không phải là ‘ftable’ vì FALSE được trả về.
R Các lệnh tóm tắt cho bảng
Bảng là một cách để tóm tắt dữ liệu và thường là điểm kết thúc của hoạt động, chẳng hạn như lập một bảng dự phòng. Tuy nhiên, nó được mong muốn thực hiện các hành động nhất định trên chính một bảng.
Một số lệnh tóm tắt hữu ích cho bảng được hiển thị như sau:
table (x, margin = NULL, FUN) – Để có được các nội dung khác nhau của khung dữ liệu, ma trận hoặc bảng, chúng ta sử dụng lệnh này. Khi chỉ định lợi nhuận là 1 , chúng tôi nhận được tổng số hàng và khi số tiền ký quỹ được chỉ định là 2 , chúng tôi nhận được tổng số cột .
Lệnh prop.table () để hiển thị tỷ lệ của tổng tổng. Chỉ mục cho các hàng và cột cũng có thể được thêm vào, qua đó bạn có thể thể hiện dữ liệu của mình theo cách tốt hơn theo các tỷ lệ khác nhau của tổng số hàng và cột. Lệnh prop.table () có thể được sử dụng để hiển thị nội dung của bảng. Điều này được thực hiện theo tỷ lệ của tổng số tiền. Cuối cùng, để thể hiện dữ liệu dưới dạng tỷ lệ của các hàng và tổng cột khác nhau, bạn cũng có thể thêm chỉ mục.
addmargin (A, margin = c (1, 2), FUN = sum) – Để trả về một hàm được áp dụng cho các hàng hoặc cột của bảng, chúng ta sử dụng lệnh addmargin (). Với lệnh này, bạn có thể sử dụng bất kỳ hàm nào trên các hàng hoặc cột.
Về cơ bản, bạn sẽ nhận được một hàng kết quả. Trong hầu hết các tình huống, bạn sẽ sử dụng hàm để tạo tóm tắt cho cả hàng và cột.
Xem thêm Các tính năng mới nhất của ngôn ngữ R
Lập bảng chéo trong R
Để biểu diễn các hàng trong định dạng bảng, chúng tôi sử dụng bảng chéo. Để làm như vậy, chúng tôi sử dụng lệnh xtabs () như sau:
xtabs (freq.data ~ category.list, data)
Lưu ý rằng dấu ngã (~) được đặt ở phía bên tay phải của tần số của dữ liệu.
Điều này tương tự như lệnh ftable () mà chúng ta đã thảo luận ở trên. Logic là như nhau. Nghĩa là, về phía bên trái của dấu ngã, chúng tôi gán tên của tần suất dữ liệu và ở bên phải của nó, chúng tôi gán các danh mục. Các danh mục này có thể được lập bảng chéo với dấu cộng (+).
Cuối cùng, chúng ta gõ tên của đối tượng dữ liệu vào cuối và nếu không, R sẽ không tìm thấy các biến này!
Chúng ta có thể sử dụng lệnh này trên dữ liệu ‘table1’ của mình như sau:
> table1.t = xtabs(A ~ B + C, data = table1) > table1.t
Kiểm tra các đối tượng trên bảng (xtabs)
Khi bạn sử dụng lệnh xtabs () , đối tượng bạn tạo là một loại bảng và cho kết quả ĐÚNG bằng cách sử dụng lệnh is.table () . Nó cũng cho kết quả ĐÚNG nếu bạn sử dụng lệnh as.matrix () .
Theo như R có liên quan, nó chứa hai loại lớp. Bạn có thể thấy điều này bằng cách sử dụng lệnh class () :
class(table1.t)
Nếu đối tượng xtabs được kiểm tra, chúng tôi có thể gặp phải vấn đề vì kết quả lớp sẽ có hai phần tử:
if(class(table1.t) == 'xtabs') TRUE else FALSE
Kết quả này là một thông báo lỗi vì kết quả ‘xtabs’ được tạo trước. Có một số sàng lọc đối với điều này được yêu cầu để chọn ra các giá trị mong muốn.
Tạo lại dữ liệu gốc từ bảng dự phòng
Đối tượng xtabs có thể được tập hợp lại vào khung dữ liệu với sự trợ giúp của lệnh as.data.frame ():
> as.data.frame(table1.t)
as.data.frame(table1.t, responseName = 'B')
Chuyển đổi lớp trong R
Bạn có thể sử dụng lệnh class () để thay đổi lớp của một đối tượng và xem lớp hiện tại của đối tượng. Điều này có thể hữu ích trong các trường hợp mà một đối tượng cần phải nằm trong một lớp nhất định để một lệnh hoạt động. Trong ví dụ sau, đối tượng bird được truy vấn và sau đó đặt lại bằng lệnh class ():
> class(bird) > attributes(bird)$class <- "table" > bird > class(bird)
Ma trận quan sát các loài chim bây giờ được phân loại thành một bảng. Bây giờ bạn có thể tiến hành tạo khung dữ liệu từ bảng bằng lệnh as.data.frame ():
> bird.df = as.data.frame(bird)
Các cột không được gắn nhãn thích hợp và dữ liệu 0 vẫn còn nguyên trong kết quả của lệnh as.data.frame () . Điều này có thể được sửa đổi bằng cách sử dụng lệnh names () và cấu trúc lại dữ liệu bỏ qua các hàng 0, được hiển thị như sau:
> bird.tt = bird > class(bird.tt) = 'table' > bird.tt = as.data.frame(bird.tt) > names(bird.tt) = c('Species', 'Habitat', 'Qty') > bird.tt = bird.tt[which(bird.tt$Qty > 0),] > rownames(bird.tt) = as.numeric(1:length(rownames(bird.tt))) #dataflair > bird.tt
- Lệnh đầu tiên chỉ đơn giản là tạo một ma trận trùng lặp để làm việc, giữ nguyên bản gốc.
- Lệnh thứ hai thay đổi lớp thành ” bảng “.
- Lệnh thứ ba tạo khung dữ liệu của các giá trị ban đầu.
- Lệnh thứ tư thay đổi tên của các cột.
- Lệnh áp chót chọn ra dữ liệu lớn hơn 0, xóa 0 quan sát một cách hiệu quả.
- Lệnh cuối cùng khôi phục các nhãn chỉ mục hàng thành một chuỗi liên tục.
Kết luận bảng dự phòng trong R
Trong bài viết này, chúng tôi đã nghiên cứu các bảng dự phòng trong R. Chủ đề này là một trong những khái niệm quan trọng nhất và việc nắm vững nó là điều tối quan trọng để có được cái nhìn sâu sắc về lập trình R. Hơn nữa, học cách quản lý dữ liệu bằng cách xây dựng bảng là một thủ tục quan trọng để đảm bảo một quá trình phân tích dữ liệu hiệu quả. Chúng tôi hy vọng rằng bạn thích đọc bài viết này.