搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  同一行多个变量向前依次移动1位.do
资料下载链接地址: https://bbs.pinggu.org/a-2996856.html
附件大小:
数据清理中,有时候会遇到需要将某一行多个变量向前或向后依次移动相同位数,在excel中操作非常方便,但是由于手工操作,其步骤无法记录、追溯和复制,因此,以下代码在stata中实现类似的操作。

Stata目前没有直接提供数组,加之个人水平有限,代码有些冗长,如果有更精简的方法还望各位网友不吝赐教,谢谢。



  1. /*****************************
  2. Example 同一行多个变量向前依次移动1位
  3. Date: 2019-12-04
  4. Author: YPP
  5. Version: 1.0
  6. *****************************/

  7. // 1. 数据生成过程
  8. clear
  9. set obs 10

  10. gen temp=.
  11. gen str a1="Boy"
  12. gen a2=1
  13. gen a3=2
  14. gen str a4="中国"
  15. gen a5=3

  16. // 2. 移动过程
  17. local varlist1 "temp a1 a2 a3 a4 a5" // 存储需要操作的变量名称,注意变量顺序
  18. local len_varlist1 =wordcount("`varlist1'") // 计算操作的变量个数

  19. // 如果变量不同类型 则将所有变量全部转换为字符型
  20. tostring `varlist1',replace

  21. // 生成一个临时变量 存储需要操作的变量名称 作用类似于数组
  22. // 当前数据集中的记录数应大于需要操作的变量数
  23. gen str temp_var=""
  24. local i=1
  25. foreach var1 of local varlist1 {
  26. replace temp_var="`var1'" in `i'
  27. local i=`i'+1
  28. }

  29. // 连续生成两个局部变量 向前移动1位
  30. forvalues j=1(1)`=`len_varlist1'-1' { // 循环计数时注意不要越界
  31. local pre_var=temp_var[`j']
  32. local post_var=temp_var[`j'+1]
  33. replace `pre_var' = `post_var' in 4 // 指定将第4行向前移动1位
  34. }

  35. // 将最后1个需要操作的变量 默认置为缺失
  36. local last_var=temp_var[`len_varlist1']
  37. replace `last_var'="" in 4
  38. drop temp_var
复制代码



    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2026-1-20 01:19