全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
8519 11
2011-01-26
假如有如下的数据。现在需要将数个ID为“2”的三条观测值加总,并最终生成一条加总后的观测值。


ID     abc     def     ……     xyz
1       20       78     ……      90
2       50       25     ……      76
2       28       59     ……      80
2       40       89     ……      65
3       46       50     ……      30


如果变量不多,可以通过 egen、total()、replace、duplicates来完成。

我的问题是,如果从abc到xyz间的变量数目很多,如何通过循环流程语句来实现吗?

foreach x of varlist abc-xyz {
       ???????
}

谢谢各位!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-1-26 22:10:50
有点奇怪了。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-26 22:31:40
袁老师见怪不怪啦~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-27 00:36:03
undertone 发表于 2011-1-26 22:02 假如有如下的数据。现在需要将ID为“2”的三条观测值加总,并最终生成一条加总后的观测值。
ID     abc     def     ……     xyz
1       20       78     ……      90
2       50       25     ……      76
2       28       59     ……      80
2       40       89     ……      65
3       46       50     ……      30
des,varl
loc r=subinstr("`r(varlist)'","ID","",.)
collapse (sum) `r', by(ID)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-27 07:22:51
sungmoo 发表于 2011-1-27 00:36

des,varl
loc r=subinstr("`r(varlist)'","ID","",.)
collapse (sum) `r', by(ID)
Re:
首先感谢回复。
如果只是求和,似乎直接用collapse(sum) abc-xyz, by(ID)就可以了。
貌似仅此还不能替换掉原来多个ID下的多条记录。
根据你的思路,我觉得可以用preserve和restore来另存出求和之后的数据,随后用append合并,最后可用多种方式删除重复的记录。
这样仍然比较烦琐。好像tempfile命令也不好运用,需要在硬盘上存读临时的求和数据文件。
不知有没有完整的流程语句可以利用。继续请教中……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-27 08:48:34
undertone 发表于 2011-1-27 07:22 如果只是求和,似乎直接用collapse(sum) abc-xyz, by(ID)就可以了。
貌似仅此还不能替换掉原来同一ID下的多条记录。
上面考虑的是,ID可以在诸变量之间。

另外,使用collapse,by(ID)后,还存在ID相同的多观测值?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群