2016-03-30 15 views
1

tüm kukla değişkenlerin sıklığı gösterir ve buBen bütün kukla değişkenlerin bir frekans tablosu oluşturmak isteyen R. bir çaylak değilim 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 

benim gibi bir veri var sadece tablo() kullanmak biliyorum bu

  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 

her değişken nasıl toplam frekansını görmek istiyorum, ama sadece bu bir değişkene bir zaman yapabilirsiniz. Çok fazla zaman zaman ciddi kukla değişkenlerim var ve bunların eğilimini görmek istiyorum. yardım

teşekkür ederiz Terence

cevap

1

İşte mtabulate ve

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

Çok teşekkür ederim. Tek adımda çalışır !! –

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 

Açıklama:

sapply veri çerçevesinin her sütun için bir fonksiyonu uygular ve bir matris verir. Bu nedenle sapply(dat[,-1], table), her sütun için (hariç tuttuğumuz ilk sütun hariç) table çıktısı olan bir matris döndürür.

Matrisin, orijinal veri çerçevesinden sütun adlarının satırlar olması ve kukla değerlerin sütun olması için aktarılması gerekir, bu nedenle bunun için t (transpose) işlevini kullanırız.

Bir veri çerçevesi istiyoruz, bir matris değil, bu yüzden her şeyi as.data.frame içine sarıyoruz.

Daha sonra, toplam değer sayısını veren başka bir sütun istiyoruz, bu yüzden rowSums işlevini kullanıyoruz.

+0

addmargins senin büyük yardım için size çok teşekkür ederim kullanarak başka bir seçenektir. Ama nasıl "rowSums (sonuç) hatası: 'x' sayısal olmalıdır", hala nerede yanlış olduğunu arıyorum. –

+0

Hata, sütunlardan en az birinin sayısal olmadığını size söylüyor. str (sonuç) size her sütunun sınıfını gösterecektir. Bunun neden 'table' ile gerçekleşeceğinden emin değilim, ancak verileriniz ve kodunuz hakkında daha fazla bilgi vermeden daha fazlasını söylemek zor. – eipi10

+0

Çok teşekkür ederim. Kodunu biraz değiştiririm ve istediğimi elde ederim, ancak toplamı olmadan. "result1 = as.data.frame (sapply (dat [, - 1], tablo)) result1_1 = (t (sonuç1) ([- 3,] [- 4,] [- 5,] [- 6 ,] [- 7,] [- 8,])) sonuç1_1 " Çok teşekkür ederim. ^^ –