R, một ngôn ngữ lập trình thống kê phổ biến được thiết kế cho xử lý, phân tích và trực quan hóa dữ liệu, được trang bị nhiều cấu trúc dữ liệu tối ưu để xử lý hiệu quả nhiều loại tác vụ dữ liệu khác nhau. Thành thạo các cấu trúc dữ liệu đa dạng của R là chìa khóa để khai mở toàn bộ tiềm năng của R và chuyển hóa dữ liệu thành những insight thuyết phục.
Khi bắt đầu, bạn có thể tham gia khóa học Giới thiệu về lập trình R để thực hành các khái niệm này với tập dữ liệu thực tế. Cùng bắt đầu nhé.
Cấu trúc dữ liệu trong ngôn ngữ R là gì?
Cấu trúc dữ liệu trong R giúp tổ chức dữ liệu phục vụ phân tích. Chúng có thể đơn giản, chỉ chứa một kiểu dữ liệu, hoặc phức tạp, hỗ trợ các kiểu dữ liệu đa dạng. Những cấu trúc này được điều chỉnh phù hợp với các nhu cầu cụ thể phát sinh trong các dự án dựa trên dữ liệu. Các cấu trúc dữ liệu chính trong R gồm vector, list, ma trận, array, factor và data frame.
Cấu trúc dữ liệu trong R
Các loại cấu trúc dữ liệu khác nhau trong R
Hãy dành chút thời gian làm quen với các cấu trúc dữ liệu trong R. Trong quá trình này, chúng ta cũng sẽ làm quen với các hàm R thường dùng.
Vector trong R
Vector là dạng cấu trúc dữ liệu đơn giản nhất trong R. Chúng là một tập hợp các phần tử cùng kiểu, như số, ký tự hoặc logic.
R được thiết kế để hoạt động rất tốt với vector và đặc biệt tối ưu cho các thao tác “vector hóa”. Điều này có nghĩa là bạn có thể áp dụng một hàm cho cả vector mà không cần vòng lặp qua từng phần tử. Ví dụ, cộng hai vector với nhau sẽ cộng các phần tử tương ứng nhanh và gọn hơn nhiều so với cộng từng phần tử bằng vòng lặp.
Dưới đây, chúng ta tạo ba vector cho kiểu số, ký tự và logic bằng hàm c().
Bạn có thể truy cập các phần tử của vector bằng dấu ngoặc vuông.
# Access the first
elementprint(numeric_vector[1])# Access multiple elements
print(character_vector[c(1,3)])Được hỗ trợ bởi
Truy cập phần tử của vector trong R
Bạn cũng có thể thực hiện các phép toán số học và logic với vector.
# Adding a scalar value to the vector
print(numeric_vector +2)# Multiplying elements by a scalar
print(numeric_vector *10)# Perform logical operations - Check which elements are greater than 15
print(numeric_vector >15)Được hỗ trợ bởi
Các phép toán với vector trong R
Các thao tác quan trọng khác gồm tính tổng, tính giá trị trung bình, và tìm giá trị nhỏ nhất/lớn nhất.
# Summation
print(sum(numeric_vector))# Mean
print(mean(numeric_vector))# Max and min
print(max(numeric_vector))
print(min(numeric_vector))Được hỗ trợ bởi
Kết quả từ các hàm cơ bản trong R
Ma trận trong R
Ma trận là mảng hai chiều lưu trữ dữ liệu cùng một kiểu. Chúng đặc biệt hữu ích cho các phép toán toán học. Trong R, bạn có thể tạo ma trận bằng hàm matrix().
my_matrix <- matrix(1:9, nrow=3, ncol=3)print(my_matrix)Được hỗ trợ bởi
Tạo ma trận trong R
Bạn có thể truy cập phần tử, hàng, cột hoặc tập con của ma trận bằng chỉ số.
# Access the element in the first row and second column
print(my_matrix[1,2])# Access the second row
print(my_matrix[2,])# Access the third column
print(my_matrix[,3])Được hỗ trợ bởi
Truy cập phần tử của ma trận trong R
Bạn cũng có thể thực hiện các phép toán với ma trận.
Array là phần mở rộng của ma trận và có thể có nhiều hơn hai chiều, cung cấp cách lưu trữ dữ liệu đa chiều hiệu quả. Bạn có thể tạo array trong R bằng hàm array().
Tham số dim = c(2, 2, 2) đặt kích thước của array. Ở đây, kích thước cho biết array sẽ có ba chiều (mảng 3D), cấu trúc gồm 2 hàng, 2 cột và 2 lớp (hay độ sâu). Kết quả của đoạn mã trên được hiển thị bên dưới. Bạn có thể tìm hiểu thêm về array trong hướng dẫn Arrays in R của chúng tôi.
my_array =array(1:8, dim =c(2,2,2))print(my_array)Được hỗ trợ bởi
Tạo array trong R
List trong R
List là cấu trúc dữ liệu linh hoạt trong R có thể chứa tập hợp đối tượng với kiểu và kích thước khác nhau. Bạn có thể tạo list bằng hàm list().
my_list <- list(name="DataCamp", year=2024, scores=c(80,90,85), active=TRUE)
print(my_list)Được hỗ trợ bởi
Nội dung của một list trong R
Sau khi tạo list, bạn có thể truy cập các phần tử bằng chỉ số hoặc theo tên.
print(my_list[[3]])
print(my_list$name)
print(my_list$scores)Được hỗ trợ bởi
Truy cập phần tử của list trong R
Factor trong R
Không giống vector, ma trận hay list, factor không xác định cấu trúc lưu trữ dữ liệu mà mô tả cách dữ liệu được xử lý trong các cấu trúc đó. Vì vậy, có thể coi factor là một kiểu dữ liệu tương tự kiểu số nguyên hoặc ký tự.
Tôi đưa factor vào danh sách vì chúng rất quan trọng để xử lý dữ liệu phân loại trong hệ sinh thái của R, đặc biệt trong các kỹ thuật thống kê nơi sự khác biệt giữa biến phân loại và biến liên tục có ý nghĩa. Điều này khác với Python, vốn yêu cầu chuyển đổi đặc trưng phân loại sang số thông qua mã hóa giả (dummy) hoặc one-hot.
Bạn có thể tạo factor bằng hàm factor() như dưới đây:
gender <- factor(c("male","female","female","male"))
print(gender)Được hỗ trợ bởi
Factor trong R
Factor cũng được lưu dưới dạng level và có thể có thứ tự hoặc không có thứ tự.
levels(gender)<- c("Female","Male")
print(gender)Được hỗ trợ bởi
Level của factor trong R
Nếu bạn muốn xem phân bố của biến factor, bạn có thể dùng hàm summary(). Kết quả cho thấy có hai mục cho mỗi level Female và Male.
Data frame là cấu trúc dữ liệu phổ biến và được dùng rộng rãi nhất trong R. Chúng đặc biệt tiện lợi vì có thể chứa các kiểu dữ liệu khác nhau ở các cột khác nhau. Bạn có thể xem chúng như các bảng trong cơ sở dữ liệu hoặc tệp CSV vì chúng lưu trữ và quản lý dữ liệu theo định dạng hai chiều, hình vuông hoặc hình chữ nhật.
Bạn có thể tạo data frame bằng lệnh data.frame().
data_frame <- data.frame( Names = c("Kiran","Ajey","Carol"), Age = c(25,30,35), Gender = c("Female","Male","Female"))# Printing the data frame
print(data_frame)Được hỗ trợ bởi
Một data frame trong R
Bạn có thể truy cập nội dung của data frame theo nhiều cách, theo cột hoặc theo hàng.
# Prints all names - use the $ sign
print(data_frame$Names)# Access the first row
print(data_frame[1,])# Access the second column
print(data_frame[,2])Được hỗ trợ bởi
Các phần tử của một data frame trong R
Data frame cực kỳ hữu ích trong xử lý và phân tích dữ liệu vì chúng hỗ trợ nhiều thao tác như trích lọc (subsetting), sắp xếp (sorting), và cung cấp cách dễ dàng để in thống kê mô tả.
Trích lọc (subsetting) một data frame trong R
subset_female <- data_frame[data_frame$Gender =='Female',]
print(subset_female)Được hỗ trợ bởi
Một tập con của data frame trong R
Sắp xếp (sorting) một data frame trong R
# Sorting
data_frame <- data_frame[order(data_frame$Age),]
print(data_frame)Được hỗ trợ bởi
Bạn có thể thấy từ các kết quả trên rằng việc thao tác với data frame trong R rất dễ dàng. Khi đi sâu hơn vào phân tích dữ liệu, bạn sẽ nhận ra data frame vô cùng linh hoạt và mạnh mẽ cho thao tác, phân tích và trực quan hóa dữ liệu. Nếu muốn khám phá thêm các chức năng, hãy xem hướng dẫn Data Frames in R của chúng tôi.
Tiếp tục với R
Hướng dẫn này đã cung cấp cho bạn cái nhìn về các cấu trúc dữ liệu trong R và cách áp dụng chúng trong các tình huống phân tích dữ liệu thực tế. Thành thạo các cấu trúc này sẽ nâng cao kỹ năng phân tích của bạn, giúp bạn quản lý và phân tích dữ liệu hiệu quả.
Khi tiếp tục hành trình, bạn sẽ khám phá rằng R là một ngôn ngữ lập trình độc đáo, nổi tiếng với năng lực thống kê mạnh mẽ và thư viện phong phú. Đây là khoản đầu tư xứng đáng cho bất kỳ ai quan tâm tới thế giới phân tích dữ liệu.
Để xem thêm các hướng dẫn về R, vui lòng tham khảo các liên kết sau:
Nếu bạn muốn học thêm, hãy đọc Câu hỏi & trả lời phỏng vấn lập trình R, một nguồn tài nguyên tuyệt vời nếu bạn đang chuẩn bị phỏng vấn hoặc chỉ đơn giản là học tập. Bài viết cung cấp nhiều câu hỏi và câu trả lời giúp bạn nhận diện khoảng trống kiến thức trong suốt hành trình học tập.
R, một ngôn ngữ lập trình thống kê phổ biến được thiết kế cho xử lý, phân tích và trực quan hóa dữ liệu, được trang bị nhiều cấu trúc dữ liệu tối ưu để xử lý hiệu quả nhiều loại tác vụ dữ liệu khác nhau. Thành thạo các cấu trúc dữ liệu đa dạng của R là chìa khóa để khai mở toàn bộ tiềm năng của R và chuyển hóa dữ liệu thành những insight thuyết phục.
Khi bắt đầu, bạn có thể tham gia khóa học Giới thiệu về lập trình R để thực hành các khái niệm này với tập dữ liệu thực tế. Cùng bắt đầu nhé.
Cấu trúc dữ liệu trong ngôn ngữ R là gì?
Cấu trúc dữ liệu trong R giúp tổ chức dữ liệu phục vụ phân tích. Chúng có thể đơn giản, chỉ chứa một kiểu dữ liệu, hoặc phức tạp, hỗ trợ các kiểu dữ liệu đa dạng. Những cấu trúc này được điều chỉnh phù hợp với các nhu cầu cụ thể phát sinh trong các dự án dựa trên dữ liệu. Các cấu trúc dữ liệu chính trong R gồm vector, list, ma trận, array, factor và data frame.
Các loại cấu trúc dữ liệu khác nhau trong R
Hãy dành chút thời gian làm quen với các cấu trúc dữ liệu trong R. Trong quá trình này, chúng ta cũng sẽ làm quen với các hàm R thường dùng.
Vector trong R
Vector là dạng cấu trúc dữ liệu đơn giản nhất trong R. Chúng là một tập hợp các phần tử cùng kiểu, như số, ký tự hoặc logic.
R được thiết kế để hoạt động rất tốt với vector và đặc biệt tối ưu cho các thao tác “vector hóa”. Điều này có nghĩa là bạn có thể áp dụng một hàm cho cả vector mà không cần vòng lặp qua từng phần tử. Ví dụ, cộng hai vector với nhau sẽ cộng các phần tử tương ứng nhanh và gọn hơn nhiều so với cộng từng phần tử bằng vòng lặp.
Dưới đây, chúng ta tạo ba vector cho kiểu số, ký tự và logic bằng hàm
c().Bạn có thể truy cập các phần tử của vector bằng dấu ngoặc vuông.
Bạn cũng có thể thực hiện các phép toán số học và logic với vector.
Các thao tác quan trọng khác gồm tính tổng, tính giá trị trung bình, và tìm giá trị nhỏ nhất/lớn nhất.
Ma trận trong R
Ma trận là mảng hai chiều lưu trữ dữ liệu cùng một kiểu. Chúng đặc biệt hữu ích cho các phép toán toán học. Trong R, bạn có thể tạo ma trận bằng hàm
matrix().Bạn có thể truy cập phần tử, hàng, cột hoặc tập con của ma trận bằng chỉ số.
Bạn cũng có thể thực hiện các phép toán với ma trận.
Các phép toán với ma trận trong R
Array trong R
Array là phần mở rộng của ma trận và có thể có nhiều hơn hai chiều, cung cấp cách lưu trữ dữ liệu đa chiều hiệu quả. Bạn có thể tạo array trong R bằng hàm
array().Tham số
dim = c(2, 2, 2)đặt kích thước của array. Ở đây, kích thước cho biết array sẽ có ba chiều (mảng 3D), cấu trúc gồm 2 hàng, 2 cột và 2 lớp (hay độ sâu). Kết quả của đoạn mã trên được hiển thị bên dưới. Bạn có thể tìm hiểu thêm về array trong hướng dẫn Arrays in R của chúng tôi.Tạo array trong R
List trong R
List là cấu trúc dữ liệu linh hoạt trong R có thể chứa tập hợp đối tượng với kiểu và kích thước khác nhau. Bạn có thể tạo list bằng hàm
list().Nội dung của một list trong R
Sau khi tạo list, bạn có thể truy cập các phần tử bằng chỉ số hoặc theo tên.
Factor trong R
Không giống vector, ma trận hay list, factor không xác định cấu trúc lưu trữ dữ liệu mà mô tả cách dữ liệu được xử lý trong các cấu trúc đó. Vì vậy, có thể coi factor là một kiểu dữ liệu tương tự kiểu số nguyên hoặc ký tự.
Tôi đưa factor vào danh sách vì chúng rất quan trọng để xử lý dữ liệu phân loại trong hệ sinh thái của R, đặc biệt trong các kỹ thuật thống kê nơi sự khác biệt giữa biến phân loại và biến liên tục có ý nghĩa. Điều này khác với Python, vốn yêu cầu chuyển đổi đặc trưng phân loại sang số thông qua mã hóa giả (dummy) hoặc one-hot.
Bạn có thể tạo factor bằng hàm
factor()như dưới đây:Factor trong R
Factor cũng được lưu dưới dạng level và có thể có thứ tự hoặc không có thứ tự.
Level của factor trong R
Nếu bạn muốn xem phân bố của biến factor, bạn có thể dùng hàm
summary(). Kết quả cho thấy có hai mục cho mỗi levelFemalevàMale.Data frame trong R
Data frame là cấu trúc dữ liệu phổ biến và được dùng rộng rãi nhất trong R. Chúng đặc biệt tiện lợi vì có thể chứa các kiểu dữ liệu khác nhau ở các cột khác nhau. Bạn có thể xem chúng như các bảng trong cơ sở dữ liệu hoặc tệp CSV vì chúng lưu trữ và quản lý dữ liệu theo định dạng hai chiều, hình vuông hoặc hình chữ nhật.
Bạn có thể tạo data frame bằng lệnh
data.frame().Bạn có thể truy cập nội dung của data frame theo nhiều cách, theo cột hoặc theo hàng.
Data frame cực kỳ hữu ích trong xử lý và phân tích dữ liệu vì chúng hỗ trợ nhiều thao tác như trích lọc (subsetting), sắp xếp (sorting), và cung cấp cách dễ dàng để in thống kê mô tả.
Trích lọc (subsetting) một data frame trong R
Sắp xếp (sorting) một data frame trong R
Tóm tắt (summary) một data frame trong R
Bạn có thể thấy từ các kết quả trên rằng việc thao tác với data frame trong R rất dễ dàng. Khi đi sâu hơn vào phân tích dữ liệu, bạn sẽ nhận ra data frame vô cùng linh hoạt và mạnh mẽ cho thao tác, phân tích và trực quan hóa dữ liệu. Nếu muốn khám phá thêm các chức năng, hãy xem hướng dẫn Data Frames in R của chúng tôi.
Tiếp tục với R
Hướng dẫn này đã cung cấp cho bạn cái nhìn về các cấu trúc dữ liệu trong R và cách áp dụng chúng trong các tình huống phân tích dữ liệu thực tế. Thành thạo các cấu trúc này sẽ nâng cao kỹ năng phân tích của bạn, giúp bạn quản lý và phân tích dữ liệu hiệu quả.
Khi tiếp tục hành trình, bạn sẽ khám phá rằng R là một ngôn ngữ lập trình độc đáo, nổi tiếng với năng lực thống kê mạnh mẽ và thư viện phong phú. Đây là khoản đầu tư xứng đáng cho bất kỳ ai quan tâm tới thế giới phân tích dữ liệu.
Để xem thêm các hướng dẫn về R, vui lòng tham khảo các liên kết sau:
Nếu bạn muốn học thêm, hãy đọc Câu hỏi & trả lời phỏng vấn lập trình R, một nguồn tài nguyên tuyệt vời nếu bạn đang chuẩn bị phỏng vấn hoặc chỉ đơn giản là học tập. Bài viết cung cấp nhiều câu hỏi và câu trả lời giúp bạn nhận diện khoảng trống kiến thức trong suốt hành trình học tập.