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
Antwort
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
Nach dem 'keep if T> 0 'könntest du alternativ einfach' n x auflisten? ' –
@NickCox Ich denke, das OP wollte eine LaTeX-Tabelle, so dass das Drucken der Ausgabe auf den Bildschirm nicht ausreichen würde. –
Sicher, aber andere, die an diesem Thread interessiert sind, müssen nicht so begrenzt sein. –
Wie wollen Sie sie sortiert? –
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