楼主: 凡雪
9996 5

[数据管理求助] Stata循环中,如何设置多个变量循环? [推广有奖]

  • 1关注
  • 1粉丝

已卖:1份资源

高中生

97%

还不是VIP/贵宾

-

威望
0
论坛币
455 个
通用积分
2.9024
学术水平
3 点
热心指数
1 点
信用等级
1 点
经验
331 点
帖子
12
精华
0
在线时间
57 小时
注册时间
2011-3-12
最后登录
2019-10-20

楼主
凡雪 发表于 2018-7-15 10:37:18 |AI写论文
30论坛币




在Stata宽面板数据中,我有84个变量:a1,a2,a3,......,a84。要求计算如下的结果:a1+a2+a3,a4+a5+a6,......,a82+a83+a84。每三个变量值相加,如何用循环做?

关键词:Stata 多个变量 tata 面板数据 变量值

沙发
凡雪 发表于 2018-7-15 15:47:13
已解决,自己写了个程序算是抛砖引玉:
forvalue i=1(3) 84{
  local j=`i'+1
  local k=`i'+2
  gen b`i' =a`i'+a`j'+a`k'
}
如果新生成的变量b需要按下标从小到大排列的话,继续执行下面的程序
forvalue i=1(1) 28{
  local h=`i'*3-2
  rename b`h' b`i'
}
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
leao3344 + 1 + 1 + 1 精彩帖子
逐梦的太阳 + 5 + 2 好的意见建议

总评分: 论坛币 + 5  学术水平 + 3  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
xxbxxb789456 学生认证  发表于 2019-3-11 15:38:49
凡雪 发表于 2018-7-15 15:47
已解决,自己写了个程序算是抛砖引玉:
forvalue i=1(3) 84{
  local j=`i'+1
高级,学习了

板凳
小白ycf 发表于 2020-1-15 10:41:39
请问楼主,问什么要把local语句写在大括号里面啊?

报纸
zhouershimei 发表于 2022-3-9 15:30:53
凡雪 发表于 2018-7-15 15:47
已解决,自己写了个程序算是抛砖引玉:
forvalue i=1(3) 84{
  local j=`i'+1
楼主,想请教一下,如果想继续循环,从2开始计算:a2+a3+a4, a5+a6+a7...,然后再从3开始计算,a3+a4+a5, a4+a5+a6...应该怎么写语句呢?感谢!

地板
赵安豆 发表于 2024-10-24 21:28:55
在Stata中处理这种类型的循环操作时,可以使用`forvalues`命令。下面是一种可能的实现方式:

```stata
* 假设你的数据已经被正确加载到Stata环境中

local N = 84 // 定义变量总数为84个

// 开始循环,每次增加3来取三个变量相加
forvalues i=1(3)`N'-2 {
    local j = `i' + 2   // 确定序列中的第三个变量的序号
   
    // 创建新变量,名为sum`i'(例如:sum1, sum4...)
    gen sum`i' = a`i' + a`=`i'+1' + a`j'
   
    // 显示生成的新变量名称和对应的计算公式
    di "创建了新的变量: sum`i', 公式为: a`i' + a`=`i'+1' + a`j'"
}

// 为了完整性,检查最后一个变量组(确保总数可以被3整除)
if (`N' % 3 == 0) {
    di "数据量满足每三个一组的条件"
}
else {
    di "注意:数据量不能完美地分成三等份,最后可能需要特殊处理"
}

// 显示生成的所有新变量
list sum1-sum82 in 1/5, noobs // 假设你的观察值数量足够多
```

这段代码会根据你描述的需求创建从`sum1`到`sum82`的新变量(每三个原变量相加的结果)。注意,由于有84个变量,所以只能生成82个结果变量,因为最后两个变量(a83和a84)无法组成完整的三元组。如果你需要对剩余的变量进行特殊处理,请在循环结束后添加相应的代码。

这种做法不仅适用于你的特定需求,也展示了如何使用Stata中的循环来处理数据集中的大量变量或观察值。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 00:24