楼主: 黃河泉
10022 8

[学习心得] 如何交换两个变量的位置! [推广有奖]

大师

53%

还不是VIP/贵宾

-

威望
3
论坛币
34049 个
通用积分
56695.2476
学术水平
3551 点
热心指数
3712 点
信用等级
2932 点
经验
308898 点
帖子
14545
精华
12
在线时间
7426 小时
注册时间
2016-7-9
最后登录
2025-12-9

楼主
黃河泉 在职认证  发表于 2017-2-6 07:28:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
昨天在论坛中,有人问到如何交换两个变量的位置?我觉得很有趣但无法(用简单方法)解决,所以我将该问题转 post 到美国 Stata 论坛,得到 Stata 大牛 Nick Cox 之回应如下:「本想更新,但原始code被消除了,所以请见"地板"之回应
  1. *! 1.0.1 NJC 5 February 2017
复制代码
与大家分享!「本想更新,但原始code被消除了,所以请见"地板"之回应」
二维码

扫码加我 拉你入群

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

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

关键词:subinstr February varlist Program Version 如何

本帖被以下文库推荐

沙发
夏目贵志 发表于 2017-2-6 08:09:39
什么情况下变量的排序会比较重要呢?我好像没遇到过需要这么仔细的改变排序的情况。一般也就是搞搞什么
gen id = ...
order id, first
这样的。

藤椅
黃河泉 在职认证  发表于 2017-2-6 08:35:53
夏目贵志 发表于 2017-2-6 08:09
什么情况下变量的排序会比较重要呢?我好像没遇到过需要这么仔细的改变排序的情况。一般也就是搞搞什么
ge ...
我大致同意你的讲法,只是我记得昨天有人问了这个问题(我不太清楚为何他需要做这样的事),只想了解 Stata 的 capacity,所以才寻求其解答!

板凳
rudi 发表于 2017-2-6 18:39:11
用 order x2, before(x1) 能行吗?

报纸
黃河泉 在职认证  发表于 2017-2-7 07:37:46
rudi 发表于 2017-2-6 18:39
用 order x2, before(x1) 能行吗?
你的建议是我们常用的,但原始问题是要"交换"两个变量位置,你的情况并没有将 x1 搬到原先 x2 的位置!

地板
黃河泉 在职认证  发表于 2017-2-7 18:35:01
黃河泉 发表于 2017-2-7 07:37
你的建议是我们常用的,但原始问题是要"交换"两个变量位置,你的情况并没有将 x1 搬到原先 x2 的位置!
Nick Cox 有更新其程序如下:
  1. *! 1.0.1 NJC 5 February 2017
  2. *! 1.0.0 NJC 5 February 2017
  3. *! swapinorder tobefirst tobesecond  
  4. program swapinorder      
  5. version 8.2      
  6. syntax varlist(min=2 max=2)      
  7. tokenize "`varlist'"      
  8. args first second      
  9. unab allvars : *      
  10. local allvars " `allvars' "      
  11. local allvars : subinstr local allvars " `first' " " `second' "   
  12. local allvars : subinstr local allvars " `second' " " `first' "   
  13. order `allvars'  
  14. end
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
txje + 2 + 2 + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

7
黃河泉 在职认证  发表于 2017-2-7 18:35:42
黃河泉 发表于 2017-2-7 18:35
Nick Cox 有更新其程序如下:
例子如下
  1. sysuse auto, clear
  2. swapinorder foreign make
  3. ds
复制代码

8
黃河泉 在职认证  发表于 2017-2-7 18:39:24
Joseph Coveney 提供另一code:
  1. program define swaporder
  2.   version 14.2
  3.   syntax varlist(min=2 max=2)   
  4.   
  5.   unab allvars : *   

  6.   local allvars = subinword("`allvars'", "`1'", "1A", 1)      
  7.   local allvars = subinword("`allvars'", "`2'", "`1'", 1)   
  8.   local allvars = subinword("`allvars'", "1A", "`2'", 1)     
  9.   
  10.   order `allvars'  
  11. end

  12. sysuse auto, clear
  13. swaporder price gear_ratio
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
txje + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

9
mxc0807 在职认证  发表于 2018-10-22 21:41:34
黃河泉 发表于 2017-2-7 18:39
Joseph Coveney 提供另一code:
swapval 命令可以实现
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
黃河泉 + 3 + 3 + 3 好的意见建议

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

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-24 12:58