许多值的已排序双向列表
Sorted Two-Way Tabulation of Many Values
我有一个相当大的数据集(大约 18,000 行)。我有两个要制表的变量,一个包含许多字符串值,第二个仅包含 4 个值。我想按 4 个类别列出字符串值。我需要这些排序。我已经尝试了几个命令,包括 tabsort
,它可以工作,但前提是我将它使用的行数限制为前 603(至少以当前排序的方式)。如果行数大于此值,则会出现 r(134)
错误,提示值太多。有什么要做的吗?我的目标是用最常用的词创建一个 table 并将其导出到 LaTeX。在 R 之类的语言中尝试这样做会容易得多吗?
这是一种方法,通过来自 SSC 的 contract
和 texsave
:
/* 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
我有一个相当大的数据集(大约 18,000 行)。我有两个要制表的变量,一个包含许多字符串值,第二个仅包含 4 个值。我想按 4 个类别列出字符串值。我需要这些排序。我已经尝试了几个命令,包括 tabsort
,它可以工作,但前提是我将它使用的行数限制为前 603(至少以当前排序的方式)。如果行数大于此值,则会出现 r(134)
错误,提示值太多。有什么要做的吗?我的目标是用最常用的词创建一个 table 并将其导出到 LaTeX。在 R 之类的语言中尝试这样做会容易得多吗?
这是一种方法,通过来自 SSC 的 contract
和 texsave
:
/* 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