をr

2016-03-30 1 views
1

内のすべてのダミー変数の周波数を示し、私は私がすべてのダミー変数の頻度表を作成したいR. で新人と私は、このをr

ID Dummy_2008 Dummy_2009 Dummy_2010 Dummy_2011 Dummy_2012 Dummy_2013 
1 1   1   0   0   1   1 
2 0   0   1   1   0   1 
3 0   0   1   0   0   1 
4 0   1   1   0   0   1 
5 0   0   0   0   1   0 
6 0   0   0   1   0   0 

のようなデータを持っています私はテーブルを()を使用することを知っているこの

  0 1 sum 
Dummy_2008 5 1 6 
Dummy_2009 4 2 6 
Dummy_2010 3 3 6 
Dummy_2011 4 2 6 
Dummy_2012 4 2 6 
Dummy_2013 2 4 6 

のように、各変数にどのようにトータル周波数を見てみたいが、私はこれだけの変数の時間を行うことができます。 私は多くの時間の重大なダミー変数を持っており、それらの傾向を見たいと思います。助けを

感謝

テレンス

答えて

1

mtabulateaddmargins

library(qdapTools) 
addmargins(as.matrix(mtabulate(df1[-1])),2) 
#   0 1 Sum 
#Dummy_2008 5 1 6 
#Dummy_2009 4 2 6 
#Dummy_2010 3 3 6 
#Dummy_2011 4 2 6 
#Dummy_2012 4 2 6 
#Dummy_2013 2 4 6 
+1

ありがとうございました。それは1つのステップで動作します!! –

1
result = as.data.frame(t(sapply(dat[,-1], table)))   
result$Sum = rowSums(result) 

      0 1 Sum 
Dummy_2008 5 1 6 
Dummy_2009 4 2 6 
Dummy_2010 3 3 6 
Dummy_2011 4 2 6 
Dummy_2012 4 2 6 
Dummy_2013 2 4 6 

説明:

sapplyは、データフレームの各列に関数を適用し、行列を返します。したがって、sapply(dat[,-1], table)は、各列(除外した最初の列を除く)に対して、tableの出力を持つ行列を返します。

元のデータフレームの列名が行であり、ダミー値が列であるように行列を転置する必要があるため、t(転置)関数を使用します。

マトリックスではなくデータフレームが必要なので、全体をas.data.frameにラップします。

次に、合計値を示す別の列が必要なので、rowSums関数を使用します。ここで

+0

を使用して別のオプションは、あなたの大きな助けのためにありがとうございました。しかし、 "rowSums(result)のエラー: 'xは数値でなければならない'というエラーが表示されますが、私はまだどこが間違っているかを探しています。 –

+0

エラーは、列のうち少なくとも1つが数値ではないことを示しています。 'str(result)'はあなたに各列のクラスを表示します。私はなぜそれが 'table'で起こるのか分かりませんが、あなたのデータとコードに関する情報がなくてももっと言い表すのは難しいです。 – eipi10

+0

ありがとうございました。私はあなたのコードを少し変更し、私は欲しいものを手に入れます。 "result1 = as.data.frame(sapply(dat [、 - 1]、table)) result1_1 =(t(result1)[ - 3、] [ - 4、] [ - 5、] [ - 6 、[]、[ - 7、] [ - 8、]))結果1_1 " ありがとうございました^^ –