なんとなく分かってきたので Baayen本 Ch1 練習問題をする.まず
head(spanishMeta, n=5)
でどんなデータフレームか見る.コラムは,
Author YearOfBirth TextName PubDate Nwords FullName
のようだ.行数だが
nrow(spanishMeta)
nrow(spanishMeta[spanishMeta$TextName,])
でも同じ数15だったので前者でいいのだろう.
「それぞれの著者について,いくつのテキストがあるのか,そして出版年の平均を出せ」とあっていきなりわからない.15行なので,
spanishMeta[,]
で全体をみてもいいがそういうことではないだろう.まず
levels(spanishMeta$Author)
で値の種類をみてから,
nrow(spanishMeta[spanishMeta$Author == “C”,])
でその値の行の数だけ数える,ということだろう.
と思ったら,解答は
xtabs( ~ Author, data=spanishMeta)
であった.これで全部一気に出る.
続いて出版年の平均であるが,
mean(spanishMeta$PubDate)
ですべての平均が出るので,これを制限して
mean(spanishMeta[spanishMeta$Author == “C”, ]$PubDate)
などなどでCだけのデータなどが出るだろう.もっと賢いやり方は,
tapply(spanishMeta$PubDate, spanishMeta$Author, mean)
だろう(これはあっていた).1項めを,2項めのレベル・値に応じて3項目の関数を適用する,ということかな.
orderを用いた並べ替えも大丈夫.もただ,
sort(v, decreasing = TRUE)
で通常とは逆ということ.merge も要素数とか合わせずともそのままやればいいようだ.この練習問題で他に気づいたことは以下である.
== ではなく < にすれば「より以下」が指定できる.
length(x)
でxの要素数が出るので,xの平均は
mean(x)
でもいいし,
sum(x)/length(x)
でもよい.この練習問題はまあできた.
R. H. Baayen, 2008, Analyzing Linguistic Data: A Practical Introduction to Statistics using R