Menu
CoddyTech

Đế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 3

sort(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] 2

Giá 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] 3
challenge icon

Thử 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")
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch R online