col_types với collectors
Một cách khác để đặt kiểu dữ liệu cho các cột được nhập là dùng collectors. Các hàm collector có thể được truyền trong một list() vào đối số col_types của các hàm read_ để chỉ cho chúng biết cách diễn giải giá trị trong từng cột.
Để xem đầy đủ danh sách các hàm collector, bạn có thể xem tài liệu collector. Trong bài này bạn sẽ cần hai hàm collector:
col_integer(): cột sẽ được hiểu là số nguyên (integer).col_factor(levels, ordered = FALSE): cột sẽ được hiểu là factor với cáclevels.
Trong bài tập này, bạn sẽ làm việc với hotdogs.txt (xem), đây là một tệp phân tách bằng tab và không có tên cột ở hàng đầu tiên.
Bài tập này là một phần của khóa học
Nhập dữ liệu vào R - Giới thiệu
Hướng dẫn bài tập
hotdogsđã được tạo sẵn cho bạn mà không thiết lập kiểu cột. Hãy kiểm tra phần tóm tắt của nó bằng hàmsummary().- Hai hàm collector đã được định nghĩa sẵn:
facvàint. Hãy xem chúng, bạn có hiểu chúng đang thu thập/diễn giải kiểu dữ liệu nào không? - Ở lần gọi
read_tsv()thứ hai, hãy chỉnh đối sốcol_types: Truyền vào mộtlist()với các phần tửfac,intvàint, để cột đầu tiên được nhập dưới dạng factor, và cột thứ hai cùng thứ ba dưới dạng số nguyên. - Tạo
summary()chohotdogs_factor. So sánh kết quả này với phần tóm tắt củahotdogs.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Import without col_types
hotdogs <- read_tsv("hotdogs.txt", col_names = c("type", "calories", "sodium"))
# Display the summary of hotdogs
___
# The collectors you will need to import the data
fac <- col_factor(levels = c("Beef", "Meat", "Poultry"))
int <- col_integer()
# Edit the col_types argument to import the data correctly: hotdogs_factor
hotdogs_factor <- read_tsv("hotdogs.txt",
col_names = c("type", "calories", "sodium"),
col_types = NULL)
# Display the summary of hotdogs_factor
___