楼主: 黄浦一杆枪
1488 1

[编程问题求助] stata 循环镶嵌求debug [推广有奖]

  • 1关注
  • 1粉丝

VIP1

大专生

38%

还不是VIP/贵宾

-

威望
0
论坛币
2107 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
446 点
帖子
28
精华
0
在线时间
62 小时
注册时间
2013-4-29
最后登录
2016-9-7

楼主
黄浦一杆枪 发表于 2015-12-20 17:29:42 |AI写论文
50论坛币
附上我的dofile local AA *A #*A想表示的是所有含A的变量
local BB *B #*B想表示所有含B的变量
foreach A of local AA{
foreach B of local BB{
gen n=count if `A'==`B'
display “`A'” “`B'” if n>0.9*count#这里想表示A和B中相同的个数大于90%就输出AB的变量名
}
}
总而言之 我的目标就是 我有一份变量名末带A和带B的dta文件,我希望能够对A和B进行匹配,即输出变量名(也有可能不能匹配成功的)
这里有好多bug 但希望大神能理解我想要解决的问题
定有重谢~




最佳答案

夏目贵志 查看完整内容

你这个一开始的定义就有问题吧。你看 你这样是得不到包含A的变量名的。 另外,display是不可以和if一起用的 什么是gen n=count if `A'==`B'? count这个变量已经存在了吗?而且你的循环第二次进行的时候会有n已经存在的错误。 还是建议你从比较基本的命令学起。写循环之前先要能正确写出循环的每一个步骤。如果只对一对变量AB进行处理的命令你都写不正确的话,加上循环只会让事情越来越糟糕。学习要一步一步的来哦~ ...
关键词:debug Stata tata bug foreach display local count

沙发
夏目贵志 发表于 2015-12-20 17:29:43
你这个一开始的定义就有问题吧。你看
  1. . sysuse auto
  2. (1978 Automobile Data)

  3. . local AA *g #*g

  4. . di "`AA'"
  5. *g #*g

  6. . foreach A of local AA {
  7.   2. di "`A'"
  8.   3. }
  9. *g
  10. #*g
复制代码


你这样是得不到包含A的变量名的。

另外,display是不可以和if一起用的
  1. . di 3 if 3>5
  2. 3if not found
  3. r(111);
复制代码


什么是gen n=count if `A'==`B'? count这个变量已经存在了吗?而且你的循环第二次进行的时候会有n已经存在的错误。

还是建议你从比较基本的命令学起。写循环之前先要能正确写出循环的每一个步骤。如果只对一对变量AB进行处理的命令你都写不正确的话,加上循环只会让事情越来越糟糕。学习要一步一步的来哦~

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

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