2012-12-04 22 views
8

9pt ölçeğinde bir Likert öğesine yanıt veren bir veri kümem var. Verilerin bir frekans tablosu (ve barplot) oluşturmak istiyorum ancak ölçek üzerindeki bazı değerler asla veri kümemde oluşmaz, bu nedenle table() bu değeri frekans tablosundan kaldırır. Bunun yerine değeri 0 frekansıyla sunmak istiyorum. Yani, el değeri 0 ile 3 adlı bir sütun eklemek zorunda kalmadan aşağıdaki frekans tablosunu almak istiyorum aşağıdaki veri setiniLikert verisi için frekans tablosunda sıfır frekansları dahil et

# Assume a 5pt Likert scale for ease of example 
data <- c(1, 1, 2, 1, 4, 4, 5) 

verilir.

1 2 3 4 5 
3 1 0 2 1 

Ben R kadar belki gözardı ettiğim bir şey temel yeniyim ama istenen sonucu veren bir fonksiyon ya seçeneği rastlamak değil.

cevap

5

table bir acil durum tablosu oluşturur istenen çıktı üretir sayılır olan sıfır sayımı içeren tablo.

tabulate(data) 
# [1] 3 1 0 2 1 

bir başka yolu (eğer tamsayılar 1'den başlayarak varsa - diğer durumlar için kolaylıkla değiştirilebilir ama): Eğer hızlı bir şekilde birden likert öğeler için sayıları veya oranlarını hesaplamak ve almak istiyorsanız

setNames(tabulate(data), 1:max(data)) # to make the output easier to read 
# 1 2 3 4 5 
# 3 1 0 2 1 
+0

Eh. Teşekkürler ama tabulasyon, frekans tabloları üretmenin evrensel yolu değildir. Pozitif tamsayılarda çalışır. örneğin tabulate (0: 1) 'veya' tabulate (-50000: 1) '(argümanların çok farklı olması durumunda çıktının neden aynı olduğunu tahmin edin). Tabular özel durumunuz üzerinde çalışır (1'den başlayarak bir "Likert" ölçeğine sahip olursunuz, ve faktörler üzerinde (çünkü seviyeleri kodludur, çünkü kurala göre, 1'den başlayarak pozitif ardışık tamsayılar olarak). Karakter vektörleri üzerinde veya sıfır ve negatif değerler – lebatsnok

+0

... cevabımı kabul etmeyi sevdiğim halde, aslında diğer cevabın daha evrensel olduğunu söyleyeyim, x'i faktöre dönüştürüp sonra tek boyutlu bir olasılık tablosunu 'table' ile yapacağız. her türlü veri ile çalışın, tabular sadece bazı özel durumlarla çalışacaktır – lebatsnok

+0

Aslında, 0 frekans verisi maksimum değere karşılık gelirse bu çalışma çalışmaz, örneğin, yukarıdaki örnekte Veri'de 5, tabulayı da göstermezdi. – AugSB

17

DÜZENLEME: table olasılık tabloları üretirken

tabular frekans tabloları üretir. Ancak, yukarıdaki örnekte olduğu gibi tek boyutlu bir olasılık tablosunda sıfır frekansları almak için aşağıdaki kod hala çalışır.


This question

kayıp halkayı sağladı. tabular bir frekans üretir ise 0 bir frekans ile seviyeleri, seviyelerini bir faktör Likert madde dönüştürülmesi, ve açık bir şekilde belirleyerek, yine

data <- factor(data, levels = c(1:5)) 
table(data) 

0

senin Bir data.frame'de çıktı olarak, psych paketindeki psych::response.frequencies işlevini beğenebilirsiniz.

df <- data.frame(item1 = sample(1:7, 2000, replace = TRUE), 
       item2 = sample(1:7, 2000, replace = TRUE), 
       item3 = sample(1:7, 2000, replace = TRUE)) 

Eğer

psych::response.frequencies(df, max = 1000, uniqueitems = 1:9) 

aşağıdaki olsun her kategoride oranını hesaplamak isterseniz::

(hayır 9s olduğunu unutmayın) bazı verileri oluşturmanızı sağlar

  1  2  3  4  5  6  7 8 9 miss 
item1 0.1450 0.1435 0.139 0.1325 0.1380 0.1605 0.1415 0 0 0 
item2 0.1535 0.1315 0.126 0.1505 0.1535 0.1400 0.1450 0 0 0 
item3 0.1320 0.1505 0.132 0.1465 0.1425 0.1535 0.1430 0 0 0 

Eğer saymak isterseniz, th ile çarpabilirsiniz. E numune boyutu:

 1 2 3 4 5 6 7 8 9 miss 
item1 290 287 278 265 276 321 283 0 0 0 
item2 307 263 252 301 307 280 290 0 0 0 
item3 264 301 264 293 285 307 286 0 0 0 

Birkaç notlar:

psych::response.frequencies(df, max = 1000, uniqueitems = 1:9) * nrow(df) 

Aşağıdaki olsun

  • 10'dan fazla tepki seçenekleri varsa max, Böylece 10. varsayılan, Sorunların olacak. Aksi halde, sizin durumunuzda ve birçok Likert öğesi durumunda, max argümanını atlayabilirsiniz.
  • uniqueitems olası değerleri belirtir. Tüm değerleriniz en az bir öğede mevcut olsaydı, bu verilerden çıkar.
  • Bu işlevin yalnızca sayısal verilerle çalıştığını düşünüyorum. Öyleyse likert kategorileriniz varsa "Kesinlikle katılmıyorum" vb. Işe yaramaz.
İlgili konular