持っているものの数をカウントする基本的な方法は、元の要素がカウントしたいものである場合は論理ベクトルの各要素が 1 であり、そうでない場合は 0 である論理ベクトルを合計することです。
いくつかのデータから始めましょう:
N = 1000
set.seed(2)
DF <- data.frame(NAME=as.character(1:N),
YEAR=sample(c("Freshman","Sophomore","Junior","Senior"),
size=N, replace=T),
MAJOR=sample(c("BIO","ECON","HIST","LIT","MATH"),size=N,
replace=T, prob=c(.20, .15, .30, .30, .05)),
GPA=runif(N, min=0, max=4))
したがって、次の方法でBIO
専攻の数を確認します。
sum(DF$MAJOR=="BIO")
[1] 181
存在するメジャーごとにいくつあるか知りたい場合は、?uniqueでメジャーのリストを取得し、 ?lapplyでリストに上記の関数を適用できます。
lapply(unique(DF$MAJOR), function(x){ sum(DF$MAJOR==x) })
これは少しきれいなバージョンです:
cbind(levels(unique(DF$MAJOR)),
lapply(unique(DF$MAJOR), function(x){ sum(DF$MAJOR==x) }))
[,1] [,2]
[1,] "BIO" 297
[2,] "ECON" 303
[3,] "HIST" 181
[4,] "LIT" 155
[5,] "MATH" 64
ここから取れるはずです。
更新: @DWin は正しいです。私はこれを複雑にしすぎていました。要因であるためDF$MAJOR
、次のように簡単に実行できます。
> summary(DF$MAJOR)
BIO ECON HIST LIT MATH
181 155 297 303 64