Đếm bằng table()
Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 15 trên 64.
table(x) đếm số lần mỗi giá trị xuất hiện. Kết quả được đặt tên theo các giá trị, sắp xếp theo thứ tự bảng chữ cái, vì vậy số lần một giá trị xuất hiện là t[["value"]]:
votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))Đầu ra:
[1] 3
[1] "coffee" "juice" "tea"
[1] 1 1 3sort(t, decreasing = TRUE) sắp xếp số lượng từ cao nhất đến thấp nhất. which.max(t) trả về vị trí của số lượng lớn nhất; nếu các số lượng bằng nhau, hàm chọn giá trị đầu tiên theo thứ tự bảng chữ cái:
votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))Đầu ra:
[1] "coffee"
[1] 2Giá trị không bao giờ xuất hiện sẽ không có trong bảng, vì vậy hãy kiểm tra bằng %in% names(t) trước khi đọc giá trị đó:
t <- table(c("A", "B", "A"))
for (grade in c("A", "B", "C")) {
n <- if (grade %in% names(t)) t[[grade]] else 0
cat(grade, n, "\n")
}Đầu ra:
A 2
B 1
C 0 table() cũng đếm các số và giá trị logic. Để đếm một giá trị duy nhất, sum(x == value) ngắn gọn hơn so với việc tạo bảng:
rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])Đầu ra:
[1] 3
[1] 3Thử thách
DễHoàn thiện vote_winner(votes). Trả về lựa chọn có nhiều phiếu bầu nhất, theo sau là số phiếu, như trong tea (3 votes). Nếu các lựa chọn hòa phiếu, hãy trả về lựa chọn đứng trước theo thứ tự bảng chữ cái.
Đoạn code được cung cấp đọc các phiếu bầu từ một dòng, trong đó các phiếu được phân tách bằng dấu phẩy, rồi in ra giá trị trả về.
Tự làm thử
vote_winner <- function(votes) {
# Viết code của bạn ở đây
""
}
# Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Chuỗi chuyên sâu
Chuỗi con với substr()Định dạng với sprintf()Tách và nối chuỗiTìm kiếm trong chuỗiThay thế văn bảnÔn tập: Tạo tên người dùng10Luồng điều khiển nâng cao
Hàm switch()ifelse() dạng vector hóarepeat và breakHàm đệ quyÔn tập: phân loại điểm3Tập hợp và đếm
Các giá trị duy nhấtCác phép toán trên tập hợpKiểm tra phần tửĐếm bằng table()Ôn tập: Khách mời sự kiện12Dự án: Theo dõi chi tiêu
Ghi lại các khoản chiTổng chi tiêuTự luyện tập: Trình biên dịch R online