loops - 使用 Stata 中变量的唯一观测值创建向量

标签 loops matrix stata frequency

我主要想做的是创建一个变量,在我的样本层(例如,由“id”变量定义)中,我可以在其中分配一个与最高频率相关的名称(在另一个(字符串)变量中同名的层中)。如果 tabulate* 能够按照我需要的方式工作,我的代码将像这样运行:

gen new_class_within_id=""

forvarlues i=1/80 {
      tab class_var, matcell(x) if id==`i'
      svmat x
      sum x2
      local name =x1 if x2==r(max)
      replace new_class_within_id=`name' if id==`i'
}

如果tabulate允许将唯一的观察名称存储在矩阵中,这将是一般的想法——当然,代码也可能有一些意想不到的错误。但是,虽然使用上面的代码似乎不可能,但我认为如果我能够在循环中存储带有一些额外编码的向量内的唯一观察结果,我可以使用 mkmat 。这可能吗?另外,有没有更简单的方法来执行我想做的事情?

*首先,我认为使用 tabulate 并将结果提取到矩阵中可以完成我需要的工作,但是 tabulate 不允许我提取名称的观察结果,只是频率。 tabulate 看起来不错,因为它在其输出中显示了列中变量的唯一观察结果,但我找不到按照输出显示的方式提取这些观察结果的方法。

最佳答案

我想我明白你的问题,但也许我不明白。一些代码:

clear
set more off

input ///
id str1 anothvar
1 a
1 a
1 a
1 b
1 m
2 c
2 c
2 m
2 a
2 z
end

list, sepby(id)

*-----

bysort id anothvar : gen count = _N
bysort id (count): gen newvar = anothvar[_N]

list, sepby(id)

如果您有遗漏和/或联系,则需要做更多工作。

关于loops - 使用 Stata 中变量的唯一观测值创建向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808284/

相关文章:

python - 如何在Python中创建矩阵变量并获取无符号值

r - 更改 R 中的内部因子水平(对于避风港很重要 - write_dta())

plot - 在 Stata 中创建 seaborn stripplot

excel - 将 p 值从 reghdfe 导出到 Excel

python 多线程用于继续循环直到用户输入。帮助理解所要求的示例

javascript - 如何使用闭包在循环中使用 then()

c++ - 创建一个循环,将输出所有大于零且小于 60(不包括 60)的 5 的倍数

确定是否可以通过翻转矩阵的行和列来达到给定二进制矩阵的算法

用固定值替换非对角线元素

python - 如何调用函数以特定模式在图形窗口中运行?