R-008 data.frame trong R
Nội dung bài viết
data.frame
là một những kiểu dữ liệu cơ bản của R.
Để hiểu rõ data.frame
của R các bạn có thể đọc tài liệu chi tiết về data.frame bằng lệnh:
1. Tạo một data.frame:
DataFrame (tương tự như một bảng tính Excel hay DataFrame Pandas trong Python) trong R có thể tạo với hàm data.frame(...)
. Về cơ bản thì data.frame
giống matrix
chỉ có khác là các cột của data.frame
có thể khác kiểu dữ liệu. Tạo data.frame
từ các vector
thì mặc định các cột sẽ lấy tên biến của vector
:
2. Truy cập thành phần trong data.frame
Tương tự như list
bạn có thể truy cập các thành phần trong data.frame
qua toán tử [[...]]
và ...$key
:
Dùng [[...]]
cho data.frame
Hoặc dùng ...$key
Tương tự như matrix
bạn có thể rút rows
và cols
của data.frame
bằng [vec.row, vec.col]
như sau:
3. Tải data.frame lên từ tập tin
R hổ trợ một số lệnh để tải một số tập tin bảng tính lên thành data.frame
. Để đọc tập tin csv
bạn có thể dùng hàm read.csv(...)
, lưu ý là cần xem working directory
trong R trước đang ở thư mục nào, việc chỉnh lại thư mục đang làm việc có thể sử dụng RStudio qua Session -> Set Working Directory -> Choose Directory
(hoặc tổ hợp phím Ctrl
+ Shift
+ H
). Bạn có thể xem nhanh thư mục hiện tại mình đang làm việc bằng lệnh:
Thường thì phiên làm việc mặc định ở thư mục Documents
.
Đọc tập tin .csv
thành data.frame
:
4. Gộp hàng và cột
Tương tự matrix
, chúng ta có thể gộp hàng và cột của data.frame
bằng hàm rbind(...)
và cbind(...)
như sau:
Với rbind(...)
gộp theo hàng:
Với cbind(...)
gộp theo cột:
5. Join hai data.frame
Trong các cơ sở dữ liệu quan hệ, một trong những toán tử quan trọng nhất là toán tử join
để gộp hai bảng dữ liệu dựa trên những giá trị giống nhau của các biến.
R cung cấp một hàm rất hữu ích là hàm merge(...)
hàm này cho phép join
hai data.frame
. Mặc định nếu không nói gì thêm thì phép join
được sử dụng là inner join
.
Xét hai bảng dữ liệu data.frame
sau đây:
Xem sơ qua dữ liệu thì chúng ta thấy ở bảng dữ liệu đầu có mã hàng Z mà bảng dữ liệu giá thành thì lại không có. Vì mặc định là inner join
nên sau khi join
thì hàng Z sẽ biến mất: