2017-01-25 2 views
0

Ich habe ein df mit n Variablen. Ich möchte, durch eine Teilmenge der Variablen Schleife und eine Häufigkeitstabelle zu erzeugen.Schleife zur Tabellierung der Variablen in Datenrahmen

Zum Beispiel gegeben df unter:

id a b c d 
1 0 1 0 1 
2 1 0 1 0 
3 0 1 0 1 

Ich habe versucht, die folgenden ohne Erfolg zu tun:

varlist <- c("a", "c") 

for (i in varlist){ 
    print(table(df$i)) 
       } 
+2

'lapply (dat [varliat], Tabelle)' – user20650

+0

Was ist mit 'table (df [varlist])'? – Uwe

+0

@UweBlock; das wird Kontingenztafeln von mehr als einer Dimension geben. Sieht aus, als ob uni- Tabellen gewünscht sind – user20650

Antwort

2

(Zuerst Ihre Matrix df transformiert zu einem Datenrahmen :)

df <- setNames(as.data.frame(df), letters[1:4]) 

Die $ nicht arbeite mit Variablen. Sie haben [[ stattdessen verwenden:

for (i in varlist){ 
    print(table(df[[i]])) 
} 

jedoch eine viel einfachere Lösung für Ihr Problem ist lapply:

lapply(df[varlist], table) 

Von der Hilfeseite von Extract:

Die Hauptunterschied ist, dass $ nicht berechneten Indizes erlaubt, während [[ tut.

+0

Vielen Dank für Ihre Hilfe! – kquach

+0

Sven, als Ergänzung, können Sie erklären, warum $ nicht mit Variablen funktioniert und [[]] wird stattdessen verwendet? Vielen Dank! – kquach

+0

@ kquach Ich habe der Antwort ein Zitat hinzugefügt. –

Verwandte Themen