Menu
Coddy logo textTech

table()로 개수 세기

Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 15번째.

table(x)는 각 값이 몇 번 나타나는지 계산합니다. 결과에는 값이 이름으로 지정되고 알파벳순으로 정렬되므로, 값의 개수는 t[["value"]]입니다:

votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))

출력:

[1] 3
[1] "coffee" "juice"  "tea"   
[1] 1 1 3

sort(t, decreasing = TRUE)는 개수를 가장 큰 값부터 가장 작은 값 순으로 정렬합니다. which.max(t)는 가장 큰 개수의 위치를 반환합니다. 개수가 같으면 첫 번째 항목, 즉 알파벳순으로 가장 먼저 나오는 값을 선택합니다:

votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))

출력:

[1] "coffee"
[1] 2

절대 발생하지 않는 값은 테이블에 전혀 없으므로, 읽기 전에 %in% names(t)로 확인하세요:

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")
}

출력:

A 2 
B 1 
C 0 

table()은 숫자와 논리값도 셉니다. 단일 값을 세려면 표를 만드는 것보다 sum(x == value)가 더 간단합니다.

rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])

출력:

[1] 3
[1] 3
challenge icon

챌린지

쉬움

vote_winner(votes)를 완성하세요. 가장 많은 표를 얻은 선택지와 그 득표 수를 tea (3 votes)와 같은 형식으로 반환하세요. 선택지의 득표 수가 같으면 알파벳순으로 먼저 나오는 선택지를 반환하세요.

제공된 코드는 쉼표로 구분된 한 줄로 투표를 읽고 반환된 값을 출력합니다.

직접 해보기

vote_winner <- function(votes) {
  # 여기에 코드를 작성하세요
  ""
}

# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 R 컴파일러