前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stata | 生成等差数列的几种方式

Stata | 生成等差数列的几种方式

作者头像
PyStaData
发布2020-08-03 11:31:50
4.3K0
发布2020-08-03 11:31:50
举报
文章被收录于专栏:PyStaDataPyStaData

提出问题

怎么用 Stata 生成 1~100,公差为 2 的等差数列?

解答一个朋友的提问,介绍使用 Stata 生成等差数列的三种方法,分别是:egen命令的 fill() 函数、forvalues循环和调用 Python 。

实现过程

方法一:egenfill()函数

clear
set obs 50
egen x1 =  fill(1(2)100)

fill(numlist)函数可以用来升序、降序或者复杂重复样式的变量,不能和byifin 联合使用。其中,numlist参数至少包含两个数字,也可以使用标准 numist 表示法。

方法二:循环

gen x2 = .
local i = 1
forvalues j = 1(2)100{
	qui replace x2 = `j' in `i'
	local i = `i' + 1
}

使用 forvalues 循环可以生成步长为 2 的序列,其中 i 用来控制 replace 值的行数,j 表示要替换成的值,即1(2)100

方法三:调用 Python

clear
python:
from sfi import Data

# create list
x3 = []
for i in range(1, 100, 2):
    x3.append(i)

Data.addObs(len(x3))
Data.addVarInt('x3')
Data.store('x3',None,x3)
end

使用 Stata16 也可以调用 Python 来完成,首先使用 range() 生成列表,再使用sfi模块写入 Stata。其中:

  • Data.addObs(len(x3)) 表示将与x3长度相同个数的观测值,添加到当前的 Stata 数据集中;
  • Data.addVarInt('x3') 表示将类型为 int 的变量x3添加到当前的 Stata 数据集中;
  • Data.store('x3',None,x3) 表示将数据存到 Stata 数据集。填入的参数为store(var, obs, val[, selectvar])var表示变量名;obs可以指定为单个观察索引、可重复的观察索引或None,如果为None,则为所有观测值。

实现结果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提出问题
  • 实现过程
    • 方法一:egen的fill()函数
      • 方法二:循环
        • 方法三:调用 Python
        • 实现结果
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档