stata中. egen dup = duplicates(_n), by(cohort10) 命令报错为unknown egen function duplicates()
时间: 2024-10-01 13:11:40 浏览: 116
对不起,看起来您可能遇到了一个误解。在 Stata 中,`egen` 命令是用来创建新的变量(egen stands for "generate each variable"),而 `duplicates()` 并不是一个内置的 `egen` 函数。实际上,要检查重复值,您可以使用以下步骤:
1. 首先,确保您已经将数据集按照想要检查重复的时间列(比如 `wave`)进行排序:
```
sort wave
```
2. 然后,可以使用 `egen` 和 `group` 命令来计算每个组内的唯一观察次数,同时生成一个新的标识符:
```
egen count = group(_n) // 创建一个新的 count 变量,表示每个波次的观察数
gen dup = (count > 1) // 如果计数值大于 1,则标记为重复
```
这里 `_n` 表示行号,`count = group(_n)` 计算每组连续的观测数,`dup = (count > 1)` 判断是否为重复。
如果仍然报错,可能是版本问题或者是输入参数有误,请确保您的 Stata 版本支持这个操作,以及输入的列名是正确的。
相关问题
stata中. egen count = group(_n) 命令报错为variable _n not found
在Stata中,`.egen` (generate) 命令用于创建新的变量,而`count = group(_n)` 的意图可能是计算每个组内的观测数,其中`_n`通常表示当前观察在数据集中的顺序编号。如果遇到`variable _n not found`错误,说明Stata找不到名为 `_n` 的内置变量。
可能的原因有:
1. 你可能在一个没有默认自动产生的序列变量(如`_n`)的数据集里操作。在新生成的数据中,`_n` 可能不存在,需要先对数据集排序或创建一个新的连续整数变量。
2. `group()`函数可能是想根据其他变量分组,但是你未指定那个变量名。确认是否有明确的分组依据,并将其包含在`group()`中,例如`group(var_name)`,这里的`var_name`是你想要依据其分组的变量。
3. 如果你在交互式模式下运行,可能是在某个特定窗口或数据文件中找不到`_n`,确保你正在正确的数据视图中运行该命令。
修复这个问题的方法通常是检查并确认`_n` 是否可用,如果需要,可以先手动创建一个计数值,然后根据这个新变量来进行分组计数。比如:
```stata
* 创建一个从1开始的连续整数序列
gen _n = _n()
* 使用_eigen命令生成新的变量,这里假设你按照变量'var_group'分组
egen count = group(var_group)
```
如果你还是无法解决问题,记得提供具体的错误信息,以便更准确地定位问题。
在stata中,. gen 家庭总收入_1percent = qnorm(0.01) unknown function qnorm()
在Stata中,`.gen`命令用于创建新的变量。如果想基于某种分布生成新变量,如将某个变量标准化到特定百分位数(比如第1%),可以使用`qnorm()`函数,它表示正态分布的累积分布函数(Quantile Function)。然而,直接在`.gen`后面使用`qnorm(0.01)`会报错,因为`qnorm`不是一个内置的Stata函数。
正确的做法是先定义一个名为`qnorm_1percent`的临时变量,然后将其分配给家庭总收入的某一个百分位数。假设`income`是你想要标准化的收入变量,你可以这样做[^1]:
```stata
* 创建一个临时变量,代表总收入的1%分位点
tempvar qnorm_1percent
quietly generate qnorm_1percent = qnorm(0.01) if income != .
* 将这个百分位点分配给新变量 "家庭总收入_1percent"
egen family_income_1percent = percentile(qnorm_1percent), by(income)
```
这里使用了`egen`命令来生成按`income`分组的新变量`family_income_1percent`,该变量取的是每个`income`水平对应的`qnorm_1percent`的百分位值。
阅读全文