在Stata中,我目前有一个如下数据集:
我试图在B列中创建一个“跟踪计数器”,使其看起来像:
这里,计数器从1开始,每当a中出现“1”时,B就会加上一个值
这似乎很简单,但我不知道如何做到这一点。以下是我迄今为止所做的工作:
假设列A在Stata中称为“A”
我使用:
gen B = A + A[_n - 1]
但是,这给了我一些启示。我不知道该怎么做,有人有什么建议吗?这里有一种方法:
clear all
set more off
*----- example data -----
嗨,我正在尝试创建一个有很多切片的饼图。由于某种原因,我在运行此代码时出错。
我的代码
我得到了这个错误
(note: areastyle p193pie not found in scheme, default attributes used)
(note: areastyle p194pie not found in scheme, default attributes used)
(note: areastyle p195pie not found in scheme, defaul
我有一个特定时间点的观测数据集,但这些时间点(以及它们之间的时间长度)因组而异。我正试图“填充”数据,以便将现有的观察结果记录到缺失的单元格中。但我只想在最初的观察之后,对一定数量的行执行此操作。例如,我可以有一个如下所示的数据集:
对于A组,我想用2001年的值填充2002年的值,用2003年的值填充2004年的值,等等。我根本不想填充2000年,因为我没有前面的值。我也不想填写2011年的值,因为“cyclelength”变量告诉我A组的观察应该每两年进行一次,所以我不想将数据结转过去。2
Stata的swilk命令执行非正态性的Shapiro-Wilk测试。同样,Stata的sfrancia对非正态性进行Shapiro-Francia检验。但是,这两个命令共享相同的帮助文件swilk.sthlp
Stata如何知道单个帮助文件用于多个命令?例如,Stata如何知道swilk.sthlp保存对命令的正确响应help sfrancia?或者ttest.sthlp保存了对help ttesti的正确响应(不仅仅是help ttest)
我正在编写一个新的程序包,同一个帮助文件应该同样适
我试图将Stata中的字符串变量a转换为字符串变量B,这样每个观察值都有一个固定的长度。例如,字符串变量A是
85
01
3
我想把它转换成另一个字符串变量B,后面有个零,以便得到每个观测值的长度5
85000
01000
30000
我知道,为了放置前导零此代码有效
genb=string(实数(A),%05.0f”)。如何修改它以获得尾随零?问题在于,新变量不是具有新格式的旧变量,而是完全不同的值。一种方法是:
clear
set more off
*----- example dat
我的目标是将受试者三年期数据集转换为具有受试者月观察值的数据集,并根据称为“精确时间”的变量,指定一个字符串变量(下面称为“strvar”)应更改值的月份
我有一个数据集,每个受试者有四个记录(受试者年度观察,即每个受试者数据集有多个记录),每个受试者的信息每三年记录一次,如下所示:
“strvar”每三年更改一次其值。变量“exact_time”记录每个变量“strvar”更改其值的确切(月、日、年)时刻。一旦“strvar”发生变化,它将在接下来的几个月内保持相同的值,直到下一个“精确时间
在将文件读入Stata之前,我正在将其写入csv。如何在csv文件中指定缺失值,以便在将csv读入Stata时,自动将其编码为缺失?找到答案-如果csv文件中的值设置为,则将其作为缺失值读入Stata 将字段留空也会起作用。我认为这比在CSV文件中使用要好,因为许多程序不会将点识别为缺少的值指示器。此外,将字段留空也适用于字符串。
我在Stata 14中工作,我有一个时间字符串变量。
我想改变它,这样我可以使操作有条件的时间。
例如,如果观测是在中午之前进行的,我想知道一个变量的平均值
sum price if time<12:00
如果时间如果您的时间从“00:00”到“23:59”那么
... if time < "12:00"
。。。如果时间
在我运行多项式逻辑回归后,我对获得预测概率感兴趣
如果我运行以下程序,我发现我的估计值存在差异:
mlogit cluster_lag i.indipvar1 i.indipvar2 i.indipvar3 indipvar4, rrr vce(cluster clustervar)
margins depvar, atmeans predict(outcome(0))
或者:
mlogit cluster_lag i.indipvar1 i.indipvar2 i.indipvar3 i
考虑与我的示例稍有不同的玩具示例:
我有两个问题:
在这种情况下,tokenize是否按预期工作?我以为是本地宏
2应该是,而不是,,而本地宏3包含字符串的其余部分(本地宏4为空)
有没有办法强制标记化将双逗号作为语法分析
性格
tokenize——以及gettoken——据我所见,不会接受重复的字符,例如,,作为复合解析字符、作为解析字符的规范并不违法,但仅理解为表示、和、是可接受的解析字符。实践中的重复被忽略,正如在“我的名字是珍珠”之后添加“我的名字是珍珠”不会在对话中添加信息一样
备份:
当名字很少时,在Stata中循环是很容易的
此外,如果有关于名称如何更改的规则(例如增量),我可以执行以下操作:
forval i = 1/5 {
...
}
然而,在有些情况下,我需要循环使用数百个名称,这些名称没有递增规则
例如:
48700 48900 48999 49020 49180 49340 ...
有没有写循环的简写方法?
还是我必须费力地把它们全部列出来?答案是这要看情况而定
如果这些是变量名的一部分,则可以执行以下操作:
clear
set obs 5
fore
标签: Stata
data-manipulation
我有一个名为“categories”的字符串变量,如下所示:
然而,正如你所看到的,一些观察结果列在“类别1”下,其他的列在“类别1”下,但我基本上想把它们加起来,其中类别1的总数为=(3686+36)=3722
由此我猜您的未命名变量是字符串,但赋值不一致
replace whatever = lower(whatever)
这是将类别1映射到类别1的几种方法之一。最好还是一起工作
gen betteryet = real(word(whatever, 2))
因为category的措
我有以下资料:
state income stateID race year education
IL 200 12 2 12 15
ML 230 32 12 2 10
....................................
有没有办法切换变量的点,使其看起来像:
state stateID year income race education
IL 12 12 200
我正在尝试从供应商名称中删除某些子字符串。因此,我放入一个宏并执行以下操作:
local item "BANKOFAMERICA" " INC" " INCORPORATED" " SYS " " SYSTEMS" " PVT" " PRIVATE" " LIMITED" " LTD" " LLC" " CORP" "LIMITED LIABILITY" "CORPORATION" " CORP " " COMPANY" " CO " " TECHNOLOGY" " TECH " "
我试图估计一个最大似然模型,但它在Stata中遇到了收敛问题。实际模型相当复杂,但当提供适当的起始值时,它在R中收敛没有问题。然而,我似乎无法让Stata接受我提供的起始值
下面我举了一个简单的例子来估计泊松分布的平均值。这不是我试图估计的实际模型,但它说明了我的问题。我设置了跟踪变量,它允许您在Stata搜索似然曲面时查看参数
虽然我使用init将起始值设置为0.5,但第一次迭代仍然显示Stata尝试将系数设置为4
为什么会这样?如何强制估算过程使用我的起始值
谢谢
generate y =
我正在foreach循环中使用滚动命令:
use "MyFile.dta"
tsset time, monthly
foreach i of varlist var1 var2 {
rolling _b, window(12) saving(beta_`i'): reg `i' DependentVariable
}
现在,这段代码为每个滚动回归保存一个不同的文件。我真正想要的是将从滚动估计中获得的每个beta向量保存为一个变量。
我希望得到的最终结果是一个数据集,其中包含时间变量和每个滚动
假设我想为ivprobit中的示例创建latex输出。即:
use http://www.stata-press.com/data/r11/laborsup.dta
ivprobit fem_work fem_educ kids (other_inc = male_educ), first
margins, dydx(_all) pred(pr)
我想要一个第一阶段的专栏,还有一个边缘效果的专栏
最好的方法是什么?可能有一种更聪明的方法,不需要重新估计第一阶段:
webuse laborsup
我正在尝试使用for循环重命名变量列表
我的代码如下所示:
local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12
local k 2 4 6 8 10 12 14 16 18 20 22 24 26 28
local n: word count `x'
forvalues i = 1 / `n' {
local a : word `i' of `x'
local b : word `i' of `k'
rename v`b
我需要使用正则表达式来提取字符串变量的一部分。我的数据是这样的,其中a表示字母字符x,Z表示数字字符。我想提取“-”前面的Z字符
我的代码如下所示
gen p_id=regexs(1)如果regexm(var1,“([0-9][0-9][0-9])[-]*[0-9][0-9][0-9][-]*[a-zA-Z]*$”)
此代码提取的内容超过了所需的内容。例如,这段代码从如下观察中提取数值部分。具体来说,它提取ZZZ
我玩弄各种表情,但无法得到所需的答案 我认为您需要更好地描述可以呈现的值的结构。但
估算背后的理论原理对我来说很清楚(正如Wooldridge的教科书和之前的一些文章所描述的那样)
:。然而,当我查看ivprobit的Stata手册时,它写道
"···regressors are continuous and are not appropriate for use with discrete endogenous
regressors."
因此,我想知道是否有其他(内置或用户编写的)命令可用于实现以估计此类模型(二进制内生回归器)
谢谢你的建议。还有一个问题:如果我想用二元
我试图在名为nbrs的变量中查找异常值,生成名为nbrs\u iqr的四分位(iqr)范围。然后我想循环(为了实践这个循环概念)1.5、2、5和10的值,将它们乘以iqr
循环中不断出现语法错误(无效语法r(198);)。我已经看到了当值不是一个范围时不能执行forvalues循环的一些情况,但是已经看到了一些示例,其中它是一个非范围,但没有明确说明这是允许的。我认为空格可以用来分隔非范围值,但我已经举手了
sum nbrs, detail
return list
gen nbrs_iqr =
我的问题与现有的关于Statalist-like的讨论密切相关。我想提出一个新问题,因为我想看看除了连续咒语的数量之外,更复杂的面板模式
比如说,给定一组公司,我想检查该公司在购买一些land>0之前有多少年没有不动产land==0
或者,更复杂地说,公司的财产低于某一水平土地
我正在使用Stata并完成一项竞争性风险回归,二次癌症诊断为失败,死亡为竞争性风险
我不确定是否正确使用了stset命令。我使用的代码如下:-
stset diagtime, time0(diagnosisdate1) origin(time diagnosisdate1) exit(diagnosisdate2) failure(fail==1)
其中,“diagtime”是主要诊断和次要诊断之间的时间,fail==1是次要诊断的发生
当我运行回归时,我需要将死亡指定为竞争性失败,但不确
有人能描述STATA中混合命令和XTMixed命令之间的区别吗?我使用的是STATA 14.2,当我使用每个命令拟合多级模型时,我会得到不同的结果
如果这是一个愚蠢或明显的问题,请道歉-提前感谢您的帮助 Current Stata在这里提供了一些见解:
xtmixed已重命名为mixedxtmixed继续工作,但
Stata 13的一部分,不再是Stata的官方部分。这是
原始帮助文件,我们将不再更新,因此可能会有一些链接
不再工作了
当前的Stata在这里提供了一些见解:
xtmixed已重命
我的问题是无论是egen sum()还是egen total()都不能正确求和
我试图求和的变量eqvalueusd是作为str20从.csv文件导入的;然后我用一个名为marketusd的新变量对其进行编码,该变量具有long(%16.0g)格式
我想要该变量中的值的总和
到目前为止我尝试了什么(没有成功)
1:汇总市场美元,仅表示和显示r(总和),显示的总和错误
2:egen sum=sum(marketusd)和egen sum=total(marketusd),它们将错误的总和放入新变量
我想在我的数据子集中随机选取3年,比如从2007年到2016年,除了2008年、2012年和2014年。我想重复这个过程500次
如何在满足所需条件的情况下进行此模拟
请注意,这是我的一个问题的后续问题,在我的一个问题中,我被提供了一个无条件案例的解决方案。最简单的方法是首先将数据子集:
sysuse uslifeexp, clear
set seed 12345
// preserve
keep if year >= 1946 & year <=1957
drop if
考虑下面的例子。我从一个str6“name”变量开始,每隔一年观察两个实体一年
clear
input str6 nameStr year
"A" 2002
"A" 2004
"A" 2006
"B" 2002
"B" 2004
"B" 2006
end
然后我使用tsfill来平衡面板:
egen id = group(nameStr)
xtset id year
tsfi
标签: Stata
data-management
我有一个由研究组成的数据集。在一些研究中有多个数据点(DP)。我的数据是结构化的,因此每一行都是一个单独的数据点。此外,我还有一个单独的变量表示具体的研究文章
我需要从与研究(而非DPs)相关的数据中获得汇总统计数据。换句话说,我需要让每一行都成为研究性学习,DPs成为计数
我使用合同尝试了下面的代码。它适用于list命令。但是,我需要汇总统计数据,并且我希望获得多个变量的汇总,并在数据组织好后将它们合并到一个表中
contract study nation
drop _freq study
c
我使用的是Stata13,在2000年到2003年的给定时间段内,我必须用不同ID清理面板格式的数据集。我的数据如下所示:
id year ln_wage
1 2000 2.30
1 2001 2.31
1 2002 2.31
2 2001 1.89
2 2002 1.89
2 2003 2.10
3 2002 1.60
4 2002 2.46
4 2003 2
我正在为modyfinyg工作,重新命名和安排评估结果,以便在Stata最终发表。到目前为止,我得到的是:
sysuse auto, clear
* interaction model
gen int_mpg_mpg = mpg*mpg // generate interaction manually
qui regress price weight mpg int_mpg_mpg foreign
mat b=e(b) // store estimation results in matr
在Stata中是否有向前和向后选择的命令?据我所知,逐步执行只能执行其中一项。有关文档的开始信息,请参阅
如果希望在两个方向上都能灵活移动,请同时指定pr()和pe()。我不知道这是否正是你想要的 有关文档的开始信息,请参阅
如果希望在两个方向上都能灵活移动,请同时指定pr()和pe()。我不知道这是否正是你想要的
在Stata 11.2版上,我试图在forvalues循环中标记变量
但是,我无法让string的扩展string函数word#idiom工作:
local names `""Growth" "Mature" "All""'
forvalues i = 0/2 {
local name : word `i' of `names'
display "`name'"
}
这是一个错误,但我不断得到无效语法错误
我还尝试了所有的本地名称,但这也不起作用
有没有一种方法可以通过算法实
我有一个数据库(我使用Stata 13),该数据库具有复杂样本设计(Strate和Pweight)的多重插补,因此我通常在分析之前使用以下命令:mi estimate,esampvaryok:svy:
我只是想知道,在这种情况下,有没有办法在Stata中使用polychoric命令?或者,如果不可能,您知道其他允许我这样做的软件吗 对每个插补数据集应用polychoric,然后对结果进行平均。尽管polychoric不了解调查,但只需要概率权重来估计相关性。下面是计算相关性的两个估计值的代码:1
我想计算我所在小组所有成员的平均数,但不包括我自己在内。假设组变量被称为group,我想通过group取val1的平均值,不包括我自己。我想创建的新专栏是avg。数据如下所示(输入了正确的avg值,以便您了解我的意思)
如果我想把自己包括在计算中,那就很简单了。我只想:
bysort Group: egen avg = mean(val1)
但是我如何用我不包括自己的皱纹来实现这一点呢?一种方法是循环所有观察结果:
clear
set more off
*----- example data
当有三个二分法IV时,我试图为DV创建一个汇总统计表(平均值,sd)。使用命令tab IV1 Iv2,sum(DV)我只能为两个IV变量创建汇总统计表,但不能为三个IV变量创建汇总统计表。但是,我需要三个IV及其交互的摘要统计数据。有办法吗?另一个命令?谢谢 您可以创建如下交互变量:
webuse nlswork
egen interaction = group(race nev_mar union), label
tab interaction, sum(ln_wage)
您可以创建如下交互
我想将我的输出保存到一个包含分析日期的文件夹中。我的代码如下所示
local d = c(current_date)
cd "c\RA-outputs"
mkdir "`d'"
twoway bar weeksum week
graph export "c\RA-outputs\`d'\out1.png", as(png) replace
然而,当我运行这段代码时,我得到一个错误,说文件夹不可用。我知道我犯了一个小错误,因为我看到了由前三行代码创建的文件夹 当您说cd时,您需要指向硬盘驱动器
我正在处理从SPSS文件导入的大约100个Stata数据文件,我不再能够访问这些文件。在构建所有文件的摘要描述时,我记录了变量和值标签,其中包括如下循环:
foreach v of varlist _all {
local varlbl: variable label `v'
// do some more things
file write `outfile' `"`v'"' // and some other stuff
}
这几乎一直都很好,额外的反勾号和单引号正确地避
我正在运行几个命令块,其中每个块都与数据集的特定子样本相关。每个块中的代码各不相同,因此我无法在所有子样本上运行for循环。此外,代码块是相互连接的(一些块的输出作为输入馈送到其他块),所以我不能只运行单独的do文件
目前,我正在运行do文件,方法是在每个命令中使用条件if sample==I(其中sample的值表示数据集的子样本)。然而,这既耗时又不优雅。我正在寻找执行以下操作的命令:
set sample = 1
code
code
code
set sample = 2
code
我想在stata中崩溃后保留变量标签。我发现尼克·考克斯的解决方案对我不起作用。代码如下所示:
在-collapse-之前,将变量标签复制到本地宏:
foreach v of var * {
local l`v' : variable label `v'
}
在-collapse-之后,使用旧标签:
foreach v of var * {
label var `v' "`l`v''"
}
折叠后的所有变量仍然没有标签 广泛解决了这个问题,但是:
在折叠之前,您需
我使用的是2000年至2016年巴西市政选举的数据集:
* Example generated by -dataex-. To install: ssc install dataex
clear
input str5 codmun_TSE str56 nome_candidato byte NUM_TURNO long votos
"58335" "WASHINGTON REIS DE OLIVEIRA" 1 15702
"58335"
要说一个数据集是(人,年)级别,意味着该数据集的每一行都有不同的(人,年)如下所示:
person year wage
Mike 2000 10
Mike 2010 30
Jack 1990 20
如何使Stata精确显示唯一定义每行的(person,year)变量集
我想制作一个日志文件来记录
person year
仅显示,但不显示任何个人信息(在日志文件中显示个人信息违反数据提供程序设置的规则)
我怎么能这样做
我想到的是以某种方式使用排序bys
假设我想要一个0:10的向量
我知道我能行
matrix x = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
但是有没有更通用的方法来做到这一点呢?假设你想创建一个0:100或27:50的矩阵,或者其他任何矩阵。算出了,你必须在mata中创建向量,然后将它返回给stata:
mata: x = range(0,10,1)
mata: st_matrix("x", x)
或者只是
mata: st_matrix("x", ran
我有一个大的do文件,它调用了几个子do文件,所有这些文件都在一个自定义最大似然模型的估计之前。就是说,我有一个main.do,看起来像这样
version 12
set seed 42
do prepare_data
* some other stuff
do estimate_ml
* lots of other stuff
global cdf "normal"
program define customML
args lnf r noise
tempvar prob1
当我使用esttab将结果从Stata导出到LaTeX时,出现了一个简单但奇怪的问题
一旦输出存储在tex文件中,我就将该文件导入Lyx。但是,所有系数前面都有[em1],符合pdf中的文本要求。即使我没有将tex文件导入Lyx并在Texworks中打开它,仍然会出现[em1]前缀。我能找到的删除[em1]的唯一方法是手动删除,这既繁琐又缺乏优雅
你知道为什么会出现这种情况吗
以下是生成代码:
svyset w1_wgt
estpost svy: tab reason1, se per
est
我有两个单独标识符和一个时间标识符(日历年)的面板数据。每个年都有我称之为健身房和老师的不同个人组合。我在下面提供玩具数据
我想填写这些数据,以便在每一年我都有健身房和老师这一年其他地方存在的所有组合。也就是说,如果健身房和教师在年的任何地方都存在,我想将它们作为一个新的组合包含在面板中。然后我将用0填充他们的类变量
如果我egen group()这两个标识符,我可以创建一个组合标识符gt,它允许我xtset并使用tsfill,full完成面板。同样,代码如下
我的问题是,如果健身房和老师从不在
我想用Stata计算具有相同ID的观测值的增长率。我的数据简化如下:
ID year a b c d e f
10 2010 2 4 9 8 4 2
10 2011 3 5 4 6 5 4
220 2010 1 6 11 14 2 5
220 2011 6 2 12 10 5 4
334 2010 4 5 4 6 1 4
3
我正在尝试从其他全局变量名中组合一个新的全局变量,如
global partA 1234
global partB 5678
global fullname $partA_$partB
但是,当我这样做时,下划线将被解释为第一个全局名称的一部分。我目前的解决方案是从partA创建一个本地
global fullname `partA'_$partB
如何将前两个全局变量连接成一个新的全局变量,并用下划线(或其他字符)分隔它们,而不创建此临时局部变量 您可以将全局名称括在{}中的$后面,如下所
标签: Stata
xlsxpassword-protection
我试图在Stata中打开一个受密码保护的.xlsx文件。我有密码,所以打开文件、复制内容并将其粘贴到另一个文件是一种选择
另一种选择是复制整个文件,删除密码保护,然后从那里继续,但这同样不理想
有没有一种方法可以在Stata中打开受密码保护的.xlsx文件而不使用一些变通方法?您在寻找什么?import命令的选项,用于拼写密码?我认为这是StataCorp的一条线,不给你可能危及你自己安全的代码。(我不知道这里可能发生什么。)导入命令会很好,但并不理想,因为正如您所提到的那样,它允许破坏安全性
我早些时候问了一个类似的问题。我试图填充缺失的值,这样观测值0-458是e0,445-832是1,832-850是0
下面的代码允许我将观测值1-160中缺少的值替换为1,其余的观测值设置为0
replace myvar = cond(_n <= 160, 1, 0) if missing(myvar)
replace myvar=cond(_n没有观察值0。我假设您指的是观察值1。否则,您的规则是不明确的,因为您为445-458提供了两条规则,为832提供了两条规则
我将给出一个最小数
我试图找出一种简洁的方法,使用Stata中的每日面板数据,只保留事件发生年份前后的两年。面板不平衡。最终,我试图进行一项事件研究,但我遇到了一些问题,因为独特的群体报告的年份不一致
数据如下所示:
ID year month day event
1 1999 1 1 0
1 1999 1 2 0
1 1999 1 3 0
1 1999 1
1 2 3 4 5 6 ...
下一页 最后一页 共 24 页