- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Stata 编程的新手。
我的问题:我需要通过(我猜)一个宏来重新排序/ reshape 数据集。
我有一个个人数据集,其中有一个变量 birthyear
'(出生年份),每个变量都包含给定日历年的体重:例如
BIRTHYEAR | W_1990 | W_1991 | W_1992 | ... | w_2000
1989 | 7.2 | 9.3 | 10.2 | ... | 35.2
1981 | 33.2 | 35.3 | ...
我想获得包含不同年龄体重的新变量,例如Weight_age_1
, Weight_age_2
等:这意味着以第一个obs为例,将Weight_age_1
留空,将7.2放入Weight_age_2
,等等。
我试过类似...
forvalues i = 1/10{
capture drop weight_age_`i'
capture drop birth`i
gen birth_`i'=birthyear-1+`i'
tostring birth_`i', replace
gen weight_age_`i'= w_birth_`i'
}
.. 但它不起作用。
你能帮帮我吗?
最佳答案
有经验的 Stata 用户不会尝试在这里编写独立的程序:他们会发现问题的核心是 reshape
。
clear
input birthyear w_1990 w_1991 w_1992
1989 7.2 9.3 10.2
1981 33.2 35.3 37.6
end
gen id = _n
reshape long w_, i(id)
rename _j year
gen age = year - birthyear
l, sepby(id)
+-----------------------------------+
| id year birthy~r w_ age |
|-----------------------------------|
1. | 1 1990 1989 7.2 1 |
2. | 1 1991 1989 9.3 2 |
3. | 1 1992 1989 10.2 3 |
|-----------------------------------|
4. | 2 1990 1981 33.2 9 |
5. | 2 1991 1981 35.3 10 |
6. | 2 1992 1981 37.6 11 |
+-----------------------------------+
要获得您想要的变量,您可以reshape wide
,但是这种long
结构是迄今为止存储这些数据以供将来 Stata 工作使用的更方便的方式.
附言你的编程问题的核心是你在变量名和它们的内容之间感到困惑。
但这是一种“查找”方法:
clear
input birthyear w_1990 w_1991 w_1992
1989 7.2 9.3 10.2
1981 33.2 35.3 37.6
end
quietly forval j = 1/10 {
gen weight_`j' = .
forval k = 1990/1992 {
replace weight_`j' = w_`k' if (`k' - birthyear) == `j'
}
}
基本技巧是使用本地宏进行名称操作。在 Stata 中,变量主要是用来保存数据的;单值常量最好保存在局部宏和标量中。 (你对“宏”这个词的理解是脚本或程序的意思并不是这个词在 Stata 中的使用方式。)
如上:这是您要求的数据结构,但它可能比 reshape long
产生的问题更多。
关于Stata - 在循环中动态定义变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297292/
为什么有两个不同的命令来生成新变量的原因? 有什么简单的方法可以记住何时使用gen和何时使用egen? 最佳答案 它们都创建一个新变量,但是使用不同的函数集。当您对数据集中的其他变量进行简单转换时,通
给我谜语: scalar bah = .1*1000.01 display bah 1 scalar list bah = 100.001 display 似乎是故意显示错误的数字。
假设我有一个包含一些变量名的本地宏 local indep "cat dog pig" 如果我希望宏只包含 cat 和 dog,如何从宏中删除 pig? 最佳答案 上下文是您想要从列出它们的字符串中删
一些数据集带有全小写的值标签,我最终得到的图表和表格显示了“埃及”、“约旦”和“沙特阿拉伯”的结果,而不是大写的国家名称。 我猜是proper() string 函数可以为我做一些事情,但我没有找到正
我最近购买了在 Linux 服务器上运行的 Stata MP12(8 核)许可证。 有没有人写过 Stata 程序,比如说模拟研究来测试 Stata MP 的性能?我想监视在作业处理过程中实际使用的内
我不想用这个问题来打扰你们,但我收到错误“{ required”,即使我的所有循环似乎都正确打开(和关闭),不幸的是 Stata 没有告诉你错误在哪里,所以我不明白为什么会这样。顺便说一句,如果我用
编辑:下面提供了一个工作示例 原文:后估计命令可用于预测因变量的值。这是一个示例,您可以在其中键入 _b[_cons] + _b[x1]*1 + _b[x2] 以获得 Y 的实际值。对于 Stata
我正在绘制时间序列并根据 Windows 7 上的 Stata 13.1 中的 bool 指标变量对某些时间段进行着色。如果指标变量等于 1,则对时间段进行着色,如果缺少则不着色。我想在 y 轴上时间
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。 Improve this
熟悉 R,我想知道向量的 Stata 等价物是什么(例如 var<-c(1,2,3,4) )? 我知道 Stata 使用宏,但我不知道如何在一个宏中存储多个值(创建宏的数组类型)。 我想遍历一些字符串
我在综合辨别力改善 (IDI) 方面得到了两个截然不同的结果。 如果我使用 nriidi.pkg 包并运行 idi 我会得到此输出 . idi totaloutcome grace_prob,
我正在使用一个基本上是 URL 的变量。因此,观察结果包括诸如此类的值 www.google.com https://www.google.com https://yahoo.movies.com
我目前有 2 个变量,state 和 year,我希望将它们转换成 1 个变量,stateyear。 我希望 stateyear 变量具有以下形式的值:state_year(例如 Texas_1962
我正在使用一个基本上是 URL 的变量。所以观察包括例如值 www.google.com https://www.google.com https://yahoo.movies.com 我正在尝试
我在工作中遇到了一个问题:我合并了两个数据集,并且有许多变量具有相同的内容,但是在数据集 1 的变量中具有值的观察在数据集中具有缺失值2. 所以我需要将值从一个变量转移到另一个变量。 这是我迄今为止最
我有一个格式如下所示的日期,我使用 R 将它从字符串转换为日期 date <- "20 Nov 2010 21:44:00:000" strptime(date,"%d %b %Y %H:%M:%S"
我有面板数据(时间: 日期,名称: 代码)。我想为变量 x 和 y 创建 10 个滞后。现在,我使用以下代码一个一个地创建每个滞后变量: by ticker: gen lag1 = x[_n-1] 但
在 Stata ,我想运行一个回归并直观地显示每个变量的系数及其相对于零的置信区间,如下所示的代码和图: sysuse auto regress price mpg weight length for
我有一个带有变量 x 的文件 aa,该变量标有值标签 x_lab。我想在Stata文件bb的变量x上使用这个值标签: use bb, clear label value x x_lab 如何导入值标签
假设我的当前工作文件夹有一个很长的文件路径(80 多个字符): use .\random_folders_name\project1\secret_data\survey_data\big_const
我是一名优秀的程序员,十分优秀!