2016-04-10 8 views
2

Seltsames Problem.Datenrahmen mit einem Faktor, der mehr Ebenen als Beobachtungen in R hat

Wie kann ich einen Datenrahmen haben, der mehr Ebenen in einer Faktorvariablen als Beobachtungen hat?

> str(cash.SR) 
'data.frame': 50 obs. of 2 variables: 
$ state  : Factor w/ 55 levels "Alabama","Alaska",..: 1 45 46 15 12 36 4 44 18 55 ... 
$ cash_avail: int 14909657 11401584 5900970 5760263 5612664 5466801 5435156 4850103 4415570 3459859 ... 

Das ist nichts kompliziertes. Ich habe ein df mit 2 Spalten und 50 Zeilen (eine für jeden Staat).

Danke.

+1

Möchten Sie die zusätzlichen Ebenen loswerden oder wollen Sie nur wissen, warum 'factor (" Alaska ", levels = state.name)' funktioniert? Ich kann mir vorstellen, dass Sie irgendwann die Reihen untergliedert haben? Wie auch immer, "doublevels (cash.SR)" wird unbenutzte Levels löschen –

+0

Ich bin nur verwirrt, wie ich 55 Levels für 50 Staaten haben kann. wenn ich male (cash.SR) mache, bekomme ich 50 x 2. Wenn ich den df mit View (cash.SR) überprüfe, zeigt er mir 2 Spalten von 50 Beobachtungen. Wie bekomme ich 55? Oh - und ich habe keine Untergruppe, aber einige Gruppenoperationen durchgeführt. – Windstorm1981

+0

Das kann nur beantwortet werden, wenn wir sehen, woher die ursprünglichen Daten stammen. Offensichtlich gibt es nur 50 Staaten, also stimme ich zu, es ist seltsam. Überprüfen Sie den Unterschied zwischen den Ebenen und den eindeutigen Vektorwerten –

Antwort

0

Es ist sehr leicht Faktoren mit mehr Ebenen als Werte zu schaffen:

tfac <- factor(1, levels=1:3) 
dput(tfac) 
    #structure(1L, .Label = c("1", "2", "3"), class = "factor") 

Wenn Sie von einer Faktorvariable mit 55 Ebenen der Teilmenge und erhalten nur 50 Treffer gibt es keine automatische Schrumpfung in der Länge von Ebenen. Sie müssen drop.levels verwenden, um ein Faktorobjekt mit weniger Ebenen zurückzugeben.

Verwandte Themen