2016-06-07 12 views
0

Ich habe einen anständig großen Datensatz (etwa 18.000 Zeilen). Ich habe zwei Variablen, die ich tabellieren möchte, eine, die viele Zeichenfolgenwerte annimmt, und die zweite, die nur 4 Werte annimmt. Ich möchte die String-Werte nach den 4 Kategorien tabellieren. Ich brauche diese sortiert. Ich habe mehrere Befehle ausprobiert, einschließlich tabsort, die funktionieren, aber nur, wenn ich die Anzahl der Zeilen, die es verwendet, auf die ersten 603 beschränken (zumindest mit der Art, wie es derzeit sortiert ist). Wenn die Anzahl der Zeilen größer ist als diese, bekomme ich den r(134) Fehler, dass es zu viele Werte gibt. Gibt es etwas zu tun? Mein Ziel ist es, eine Tabelle mit den gebräuchlichsten Wörtern zu erstellen und sie nach LaTeX zu exportieren. Wäre es viel einfacher zu versuchen, dies in etwas wie R zu tun?Sortierte Zwei-Wege-Tabellierung vieler Werte

+0

Wie wollen Sie sie sortiert? –

+0

Ja, ich hätte klarer sein sollen. Ich möchte sie nach Häufigkeit sortiert haben, so dass die am häufigsten vorkommenden Wörter oben erscheinen würden. Ich bin nicht wählerisch, was das genau bedeutet. Meine bevorzugte Sortierung wäre die gleiche Sortierung, die man erhalten würde, ohne sie durch die 4 Werte aufzuteilen (d. H. Diejenige, die unter Verwendung einer Einwegtabulatur erhalten würde). Aber es wäre auch gut, wenn es nur von einer der Spalten nach Häufigkeit sortiert wäre. – bill999

Antwort

3

Hier ist ein Weg, über contract und texsave von SSC:

/* Fake Data */ 
set more off 
clear 
set matsize 5000 
set seed 12345 
set obs 1000 
gen x = string(rnormal()) 
expand mod(_n,10) 
gen y = mod(_n,4) 

/* Collapse Data to Get Frequencies for Each x-y Cell */ 
preserve  
    contract x y, freq(N) 
    reshape wide N, i(x) j(y) 
    forvalues v=0/3 { 
     lab var N`v' "`v'" // need this for labeling 
     replace N`v'=0 if missing(N`v') 
    } 
    egen T = rowtotal(N*) 
    gsort -T x // sort by occurrence 
    keep if T > 0 // set occurrence threshold 
    capture ssc install texsave 
    texsave x N0 N1 N2 N3 using "tab_x_y.tex", varlabel replace title("tab x y") 
restore 

/* Check Calculations */ 
type "tab_x_y.tex" 
tab x y, rowsort 
+0

Nach dem 'keep if T> 0 'könntest du alternativ einfach' n x auflisten? ' –

+0

@NickCox Ich denke, das OP wollte eine LaTeX-Tabelle, so dass das Drucken der Ausgabe auf den Bildschirm nicht ausreichen würde. –

+0

Sicher, aber andere, die an diesem Thread interessiert sind, müssen nicht so begrenzt sein. –