Ho un set di dati con risposte a un oggetto Likert su una scala 9pt. Vorrei creare una tabella di frequenza (e un barattolo) dei dati ma alcuni valori sulla scala non si verificano mai nel mio set di dati, quindi table()
rimuove tale valore dalla tabella delle frequenze. Vorrei invece presentare il valore con una frequenza di 0
. Cioè, dato il seguente insieme di datiInclude frequenze zero nella tabella delle frequenze per i dati Likert
# Assume a 5pt Likert scale for ease of example
data <- c(1, 1, 2, 1, 4, 4, 5)
desidero ottenere la seguente tabella di frequenza senza dover inserire manualmente una colonna denominata 3
con il valore 0
.
1 2 3 4 5
3 1 0 2 1
Sono nuovo di R
, quindi forse ho trascurato qualcosa di essenziale, ma non ho incontrato una funzione o opzione che dà il risultato desiderato.
Bene. Grazie, ma tabulate non è il modo universale per produrre tabelle di frequenza. Funziona su numeri interi positivi. prova, ad es. 'tabulate (0: 1)' o 'tabulate (-50000: 1)' (indovina perché l'output è identico se gli argomenti sono molto diversi). Tabulate funziona sul tuo caso speciale (ti capita di avere una scala "Likert" a partire da 1, e su fattori (perché i livelli sono codificati, per convenzione, come interi consecutivi positivi a partire da 1). Non funzionerà su vettori di caratteri o con zero e valori negativi – lebatsnok
... quindi, mentre mi piace accettare la mia risposta, direi che l'altra risposta è più universale. Convertire la conversione in fattore X e quindi creare una tabella di contingenza unidimensionale con 'table' funziona con tutti i tipi di dati mentre 'tabulate' funziona solo con alcuni casi speciali – lebatsnok
In effetti, questo non funziona se i dati di frequenza 0 corrispondono al massimo. Ad esempio, nell'esempio sopra, se non ci fosse 5 in 'data',' tabulate' non lo mostrerebbe neanche. – AugSB