2010-11-04 7 views
1

J'ai une colonne dans une base de données qui contient un facteur ordonné. Je résume le nombre d'entrées dans la colonne pour chaque facteur en faisant fondre les données, puis en les convertissant. Jusqu'ici tout va bien. Mais j'ai besoin d'inclure des facteurs pour lesquels aucune ligne n'existe, de sorte que les données résumées montrent tous les facteurs possibles, pas seulement ceux qui sont utilisés.Résumer un facteur ordonné

La trame de données:

> str(instats) 
'data.frame': 75 obs. of 5 variables: 
$ incident  : Factor w/ 75 levels "INC000000503771",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ submit.date :Class 'Date' num [1:75] 14907 14907 14907 14907 14907 ... 
$ resolved.date:Class 'Date' num [1:75] 14910 14907 14910 14907 14907 ... 
$ closed.date :Class 'Date' num [1:75] 14913 14910 14913 14910 14910 ... 
$ status  : Ord.factor w/ 6 levels "Opened"<"Resolved Pending Customer Action"<..: 5 5 5 5 5 5 5 5 5 5 ... 
> 

ce que je l'ai fait jusqu'à présent:

> df.melt <- melt(instats,id=c('status'),measure=c('incident')) 
> cast(df.melt, status ~ .,length) 

et je reçois:

      status (all) 
1 Resolved Pending Customer Action 11 
2    Pending xxx Action  3 
3    Pending yyy Action  7 
4       Closed 54 

ce que je veux est:

      status (all) 
1       Opened  0 
2 Resolved Pending Customer Action 11 
3    Pending xxx Action  3 
4    Pending yyy Action  7 
5       Closed 54 
6       Canceled  0 

Je comprends pourquoi la fusion/moulage me donne les résultats qu'il fait. Mais comment puis-je faire cela pour obtenir les résultats souhaités?

Répondre

2

Vous pouvez simplement utiliser table

instats <- data.frame(status=sample(letters[1:5],75,TRUE)) 
instats$status <- factor(instats$status,levels=letters[1:6]) 

table(instats$status) 
as.data.frame(table(instats$status)) 

# or summary 
summary(instats$status) 
+0

Parfait. Merci! – lightkeeper