- vừa được xem lúc

Thao tác cơ bản với khung dữ liệu trong R (phần 1)

0 0 23

Người đăng: Nguyễn Hữu Trí

Theo Viblo Asia

Giới thiệu

R là một ngôn ngữ lập trình bậc cao, nó được tạo ra với mục đích dành cho các công việc liên quan đến phân tích dữ liệu, thống kê và học máy. Tôi gọi R là "Super Excel" và nó còn hơn thế nữa. Nếu bạn là người mới tìm hiểu về ngôn ngữ R, đây là bài dành cho bạn. Hãy bắt đầu với những thao tác dữ với dữ liệu cơ bản nhất.

Tạo khung dữ liệu

khung dữ liệu (data frame) là một cấu trúc dữ liệu dạng bảng như excel

Đầu tiên hãy tạo một khung dữ liệu (data frame) sau đó chúng ta sẽ thực hành trên khung dữ liệu này


id <- c(1, 2, 3, 4, 5, 6)
name <- c('Hien', 'Thu', 'Hung', 'Ngoc', 'Duong', 'Xuyen')
gender <- c('F', 'F', 'M', 'F', 'M', 'F')
date_of_birth <- c('11/3/1998', '21/2/1998', '12/7/1998', '30/5/1998', '23/2/1997', '15/1/2999')
math <- c(8, 7.5, 8.6, 9.25, 6, 7)
literature <- c(9, 6, 4.9, 6.6, 7.1, 8)
english <- c(7, 7.4, 5.9, 8.2, 5.5, 9) students <- data.frame(id, name, gender, date_of_birth, math, literature, english) students # hiển thị dữ liệu

kết quả được khung dữ liệu có tên students:

image.png

! lưu ý:

trong R hàm hàm c() tạo ra một cấu trúc dữ liệu có tên là vector, bạn có thể tưởng tượng vector giống như mảng trong các ngôn ngữ lập trình khác như java, c...

Hàm data.frame() tạo ra một khung dữ liệu có các cột là các vector truyền vào.

Dấu "." trong tên gọi data.frame() không giống như các ngôn ngữ lập trình khác, nó đơn giản chỉ là một ký tự. Có thể tác giả của hàm đó đã đặt tên là data_frame() hoặc dataFrame() nhưng họ đã không làm vậy, và ta được tên hàm data.frame()

Thao tác với khung dữ liệu

Tạo ra biến mới

bạn có thể tạo ra một vector từ các vector khác và toán tử

mean_score <- (math + literature + english) / 3
mean_score # kết quả là: 8.000000 6.966667 6.466667 8.016667 6.200000 8.000000

Hoặc nếu có sẵn dữ liệu trong data frame, bạn có thể thao tác giữa các cột

mean_score <- (students$math + students$literature + students$english) / 3
mean_score # kết quả là: 8.000000 6.966667 6.466667 8.016667 6.200000 8.000000

Hoặc bạn có thể vừa thao tác với dữ liệu và tạo ra cột mới trong data frame

students$mean_score <- (students$math + students$literature + students$english) / 3
students # hiển thị dữ liệu

image.png

thay đổi giá trị

Ồ bạn Xuyen sinh ngày '15/1/2999', có vẻ đó là ngày '15/1/1999', chúng ta nên đặt lại giá trị cho dữ liệu này

students$date_of_birth[students$name=='Xuyen'] <- '15/1/1999'

Hãy tạo ra thêm một biến học lực

students$academi[students$mean_score >= 8] <- 'Gioi'
students$academi[students$mean_score < 8 & students$mean_score >= 6] <- 'Kha'
students$academi[students$mean_score < 6] <- 'TB va Yeu' students

image.png

Tôi có thể viết lại đoạn code trên bằng cách khác (hơi nâng cao xíu, bạn có thể tham khảo hoặc không)

within(students, { academi <- NA academi[students$mean_score >= 8] <- 'Gioi' academi[students$mean_score < 8 & students$mean_score >= 6] <- 'Kha' academi[students$mean_score < 6] <- 'TB va Yeu'
}) students

Dữ liệu ngày tháng

có vẻ dữ liệu trong biến date_of_birth của chúng ta không phải kiểu dữ liệu date, nó đang được lưu dưới dạng chuỗi (string), điều đó có thể không tốt lắm sau này. Nếu chúng ta thường xuyên thao tác với biến date_of_birth, ta nên chuyển nó sang định dạng kiểu dữ liệu date. Điều đó thực hiện bằng câu lệnh dưới đây:

students$date_of_birth <- as.Date(students$date_of_birth, '%d/%m/%Y') students

image.png

Hãy cùng tìm hiểu rõ hơn R chuyển đổi định dạng sang kiểu dữ liệu date như thế nào.
Định dạng mặc định của kiểu dữ liệu date là "yyyy-mm-dd", ví dụ R sẽ hiểu được câu lệnh sau:

as.Date('2022-04-18')

Tuy nhiên nếu định dạng khác (ví dụ như trong dữ liệu của chúng ta) ta phải giải trình cho R hiểu bằng cách truyền vào định dạng trong hàm as.Date() ví dụ:

as.Date('18/4/2022', '%d/%m/%Y')

hoặc

as.Date('18-4-22', '%d-%m-%y')

Các định dạng ngày tháng được quy định trong bảng sau:

Cú pháp Ý nghĩa Ví dụ
%d Ngày (từ 1 đến 31) 31
%a Thứ trong tuần (viết tắt) Mon
%A Thứ trong tuần Monday
%m Tháng (từ 1 đến 12 12
%b Tên của tháng (viết tắt Jun
%B Tên của tháng June
%y Năm (hai số cuối) 09
%Y Năm (bốn số) 2009







Các hàm cơ bản khác: with(), names(), is.na(), na.omit()

Bình luận

Bài viết tương tự

- vừa được xem lúc

Data bias trong phân tích dữ liệu

Hi các bạn, để tiếp tục chuỗi bài chia sẻ về nghiệp vụ của BA, hôm nay mình sẽ chia sẻ một chút về Data analysis (phân tích dữ liệu) - một kỹ thuật khá là rộng và cũng rất quan trọng với BA trong thời

1 0 106

- vừa được xem lúc

Data Mining - Khai phá dữ liệu - [Data Science Series]

I. Data Mining là gì. Quá trình khai phá dữ liệu là một quá trình phức tạp bao gồm kho dữ liệu chuyên sâu cũng như các công nghệ tính toán. 1.

0 0 30

- vừa được xem lúc

Data Science, công việc hấp dẫn nhất thế kỷ 21 - [Data Science Series]

I. Data Science, công việc hấp dẫn nhất thế kỷ 21.

0 0 25

- vừa được xem lúc

Thao tác cơ bản với khung dữ liệu trong R (phần 2)

Giới thiệu. R là một ngôn ngữ lập trình bậc cao, nó được tạo ra với mục đích dành cho các công việc phân tích dữ liệu, thống kê và học máy.

0 0 14

- vừa được xem lúc

Ngôn ngữ lập trình sử dụng trong Data Science - [Data Science Series]

Có một số lượng lớn các lựa chọn khi nói đến ngôn ngữ lập trình nói riêng và ngôn ngữ lập trình trong Data Science . Mỗi người đều có điểm mạnh và điểm yếu của riêng và sẽ không có ai trả lời đúng cho

0 0 20

- vừa được xem lúc

Nhiệm vụ và các kỹ năng của một Data Analyst - [Data Analyst Series]

Mặc dù vai trò của một nhà phân tích dữ liệu khác nhau tùy thuộc vào loại hình tổ chức, tuy nhiên có một số nhiệm vụ điển hình cho vai trò phân tích dữ liệu trong các tổ chức ngày nay. Chúng bao gồm:.

0 0 19