Stata 从distinct命令返回矩阵
我有一个关于Stata中Stata 从distinct命令返回矩阵,stata,stata-macros,Stata,Stata Macros,我有一个关于Stata中distinct命令的简单问题 当与by前缀一起使用时,它能否返回r(N)的一维矩阵 例如: sysuse auto,clear bysort foreign: distinct rep78 我是否可以存储一个[2,1]矩阵,每行表示rep78的不同值的数量 该手册似乎建议只按值存储最后一个的不同值的数量 您可以轻松创建自己的包装: sysuse auto,clear sort foreign levelsof foreign, loc
distinct
命令的简单问题
当与by
前缀一起使用时,它能否返回r(N)
的一维矩阵
例如:
sysuse auto,clear
bysort foreign: distinct rep78
我是否可以存储一个[2,1]
矩阵,每行表示rep78
的不同值的数量
该手册似乎建议只按值存储最后一个的不同值的数量 您可以轻松创建自己的包装:
sysuse auto,clear
sort foreign
levelsof foreign, local(foreign_levels)
local number_of_foreign_levels : word count `foreign_levels'
matrix distinct_mat = J(`number_of_foreign_levels', 1, 0)
forvalues i = 1 / `number_of_foreign_levels' {
quietly distinct rep78 if foreign == `i' - 1
matrix distinct_mat[`i', 1] = r(ndistinct)
}
matrix list distinct_mat
distinct_mat[2,1]
c1
r1 5
r2 3
请注意,不同观测值的数量存储在
r(ndistinct)
中,而不是r(N)
您可以轻松创建自己的包装:
sysuse auto,clear
sort foreign
levelsof foreign, local(foreign_levels)
local number_of_foreign_levels : word count `foreign_levels'
matrix distinct_mat = J(`number_of_foreign_levels', 1, 0)
forvalues i = 1 / `number_of_foreign_levels' {
quietly distinct rep78 if foreign == `i' - 1
matrix distinct_mat[`i', 1] = r(ndistinct)
}
matrix list distinct_mat
distinct_mat[2,1]
c1
r1 5
r2 3
请注意,不同观察值的数量存储在
r(ndistinct)
中,而不是r(N)
这里是将不同值的数量存储到矩阵中的另一种方法
. sysuse auto
(1978 Automobile Data)
. egen tag = tag(foreign rep78)
. tab foreign if tag, matcell(foo)
Car type | Freq. Percent Cum.
------------+-----------------------------------
Domestic | 5 62.50 62.50
Foreign | 3 37.50 100.00
------------+-----------------------------------
Total | 8 100.00
这里是另一种将不同值的数量放入矩阵的方法
. sysuse auto
(1978 Automobile Data)
. egen tag = tag(foreign rep78)
. tab foreign if tag, matcell(foo)
Car type | Freq. Percent Cum.
------------+-----------------------------------
Domestic | 5 62.50 62.50
Foreign | 3 37.50 100.00
------------+-----------------------------------
Total | 8 100.00
distinct
是社区贡献的(用户编写的),因此它的文档是自己的帮助文件,而不是StataCorp制作的手册。@NickCox您是对的。我说得不准确。distinct
是社区贡献的(用户编写的),所以它的文档是自己的帮助文件,而不是StataCorp制作的手册。@NickCox您是对的。我说的不准确。谢谢你的解决方案。我考虑过这一点,认为会有一个更简单的解决方案。@YanSong如果你必须对不同的变量重复这样做,你可以将上述内容包含到一个程序中。然后你只需要写一行。谢谢你的解决方案。我考虑过这一点,认为会有一个更简单的解决办法。@YanSong如果你必须对不同的变量重复这样做,你可以将上述内容包含到一个程序中。然后你只需要写一行。