2016-10-21 9 views
2

私は200を超えるカテゴリ変数を持つテーブルを持っています。サンプル:カテゴリ変数のRの頻度クロス集計

Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A 

データセットに表示されたカテゴリの頻度(回数)を取得したいとします。このような何か:

  • B 3 ...

Rに、私は非常に新しい、結果を得るために、forループを使用してみました。私はそうするより良い方法があると確信しています。これで私を助けてもらえますか?一般的に

+0

'' Cat1'の '' A ''は' 'Cat2'の' 'A''と同じですか?つまり、各変数内、またはすべての変数上で '' A ''を数えたいですか? – gung

+0

ありがとうございました。はい、移行してください。 –

+0

はいcat1の "A"は他の変数の "A"と同じです。 –

答えて

1

、あなたはそれぞれのタイプの持っているどのように多くのトークンカウントするための最も便利な機能が?tableです:データセット内のすべてのカテゴリ変数のためtable()を実行するための

d <- read.table(text="Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A", header=T) 
table(d$Cat1) 
# A B 
# 3 1 

最も便利な方法は、?summary.data.frameを使用することです:一方

summary(d) 
# Cat1 Cat2 Cat3 
# A:3 A:1 A:4 
# B:1 B:2   
#  C:1   

あなたはすべてのカテゴリ変数の上に崩壊するテーブルを取得したい場合、あなたは?unlisttable()使用することができます。

table(unlist(d)) 
# A B C 
# 8 3 1 

が起こっているのかを理解するには、実現する事がRにデータフレームがリストの特別な種類であるということである:各変数はベクトルであり、データフレームは同じ長さのベクトルのリストである(参照: 、here)。 unlist()関数は、それらを最初から最後まで結合された1つの長いベクトルに変換します。非カテゴリ変数が混在している場合は、table(unlist(d[,c(<variables to use>)]))のようなものを除外する必要があります。

関連する問題