stata基本指令

//写在前面:做笔记用

切换数据集一定要用clear!!

命令结构:
[by varlist:]command [ ] [ ] [ ] [,option] //“,”是可选项的意思,但还是不太明白和前面不带都逗号的区别

log uising “”
set more on //显示开头,自己翻页
set more off

审视数据
d //查看所有变量名称及类型
list s lnw //查看某一变量数据
list s in 1/5 //1/5表示[1,5] 用斜杠表示很新颖!
     |  s |
     |----|
  1. | 12 |
  2. | 16 |
  3. | 14 |
  4. | 12 |
  5. |  9 |
     +----+
//排序
sort s
list s
gsort -s //gsort “-”倒序
list s 
数据计算gen+运算命令


在这里插入图片描述
图片来自于《stata软件教程(人大十八讲)》
图片来自于《stata软件教程(人大十八讲)》

拓展:gen与egen 生成逻辑变量
gen y=sum(tenure)//列表显示:累积求和
list y
egen z=sum(tenure)//一列全是sum
list z
gen p1=(price>=.27) //生成逻辑变量(虚拟)

结果:
在这里插入图片描述

统计分析
sum x[,detail] //",d"查看细节
 sum s
 

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
           s |        758    13.40501    2.231828          9         18
sum s,d //d(detail详细的描述性统计
(分位数)

tabulate price //经验分布函数,显示频率、百分比和累计百分比
. tabulate price //经验分布函数,显示频率、百分比和累计百分比

      price |      Freq.     Percent        Cum.
------------+-----------------------------------
        .26 |          1        3.33        3.33
       .262 |          1        3.33        6.67
    ……略
       .287 |          3       10.00       96.67
       .292 |          1        3.33      100.00
------------+-----------------------------------
      Total |         30      100.00

相关系数矩阵pwcorr

[,sig star]


. pwcorr consumption price income temp,sig star(.05)

             | consum~n    price   income     temp
-------------+------------------------------------
 consumption |   1.0000 
             |
             |
       price |  -0.2596   1.0000 
             |   0.1660
             |
      income |   0.0479  -0.1075   1.0000 
             |   0.8014   0.5719
             |
        temp |   0.7756* -0.1082  -0.3247   1.0000 
             |   0.0000   0.5692   0.0800
             |

//相关系数:“pwcorr”表示“pairwise correlation”(两两相关)//“sig”表示显示相关系数的显著性水平(即p 值)//star(.05)”表示给所有显著性水平小于或等于 5%的相关系数打上星号。
<think>嗯,用户问的是Stata中标序号的指令和示例。首先,我需要回忆一下Stata中生成序列号的常用命令。记得最基础的是`generate`配合`_n`或者`_N`,可能还有`egen`的`seq()`函数。不过得确认具体用法是否正确。 首先,`generate`命令可以用`_n`来生成从1开始的序号。比如`gen id = _n`,这样每个观测值都会有一个唯一的id,从1到观测总数。这适用于整个数据集的情况。但如果有分组的话,可能需要用到`by`命令,比如`by group: gen seq = _n`,这样每个组内会重新从1开始编号。 然后`egen`命令的`seq()`函数可能更灵活一些,可以指定起始值和步长。比如`egen seq = seq(), from(1) to(100)`,不过需要确认语法是否正确,可能`to`参数可能不是必须的,或者有其他参数。也可能`seq()`默认是从1开始,步长1,持续到数据结束。另外,`egen`的`seq()`可能还支持分组情况下生成序列,比如结合`by`语句。 用户可能还遇到需要按条件生成序号的情况,比如根据某个变量的不同值来重置序号。这时候可能需要结合`by`和`sort`来确保数据排序正确,再生成序号。比如先按时间排序,然后按每个个体生成时序编号。 另外,可能还需要处理重复数据的情况,比如使用`duplicates`命令去重后再生成序号,或者用`bysort`来确保每个组的唯一性。此外,如果用户需要生成不连续的序号,可能需要使用更复杂的表达式,比如`replace id = _n * 2`来生成偶数序号。 还要注意Stata中变量的类型,确保生成的序号是数值型的,避免出现格式错误。另外,当数据被修改或添加新观测时,可能需要重新生成序号,这时候最好在生成后保持数据的稳定性。 最后,可能需要提醒用户一些常见问题,比如在使用`by`之前必须排序数据,否则结果可能不符合预期。同时,举例说明不同的应用场景,比如面板数据中的个体时间序列编号,或者实验中的处理组和对照组编号。 总结下来,主要的指令是`generate`和`egen seq()`,结合`by`和`sort`来处理分组情况,同时注意数据排序和重复值处理。示例应该覆盖基本使用、分组生成、自定义起始和步长,以及条件生成等情况。</think>### Stata中标序号的指令及示例 在Stata中,生成序列号(标序号)的常用指令是`generate`和`egen`,结合`_n`、`_N`或`seq()`函数实现。以下是具体方法和示例: --- #### 1. **基础序列生成** - **单列连续序号** 使用`generate`命令和系统变量`_n`(当前观测值的行号)生成从1开始的连续序号: ```stata generate id = _n ``` 例如,数据集有100行,则`id`变量的值为1, 2, 3, ..., 100[^2]。 - **固定范围序列** 若需生成特定范围的序号(如1到50,步长为2): ```stata generate seq = 1 + 2*(_n-1) if _n <= 50 ``` --- #### 2. **分组生成序列号** - **按分组变量生成组内序号** 使用`bysort`命令结合`_n`,为每个组生成独立的序号: ```stata bysort group_var: generate group_seq = _n ``` 例如,按“城市”分组后,每个城市内的观测值序号会从1开始重新计数。 - **生成跨组累计序号** 若需要全局唯一且连续的序号(即使分组变化): ```stata egen unique_id = seq(), from(1) ``` --- #### 3. **复杂序列生成** - **条件筛选后标号** 仅对满足条件的观测值生成序号: ```stata generate condition_seq = _n if age > 18 ``` - **自定义起点和步长** 使用`egen`的`seq()`函数灵活定义序列: ```stata egen custom_seq = seq(), from(5) to(100) block(10) ``` 此处`block(10)`表示每10个观测重复一次序列[^1]。 --- #### 4. **处理重复值与重置序号** - **去重后生成唯一序号** 先删除重复值,再生成序号: ```stata duplicates drop var1 var2, force generate clean_id = _n ``` - **按时间序列重置序号** 对面板数据,按个体和时间生成时序编号: ```stata bysort individual (year): gen time_id = _n ``` --- ### 示例代码 ```stata * 示例1:简单序列 sysuse auto, clear generate row_num = _n list make row_num in 1/5 * 示例2:分组序号 bysort foreign: gen group_order = _n list foreign group_order in 1/10 * 示例3:自定义序列 egen custom = seq(), from(100) to(105) list custom in 1/6 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值