楼主: wudizhao
15158 6

[编程问题求助] 求助,stata循环生成变量的编程问题 [推广有奖]

已卖:1份资源

教授

1%

还不是VIP/贵宾

-

威望
0
论坛币
33 个
通用积分
19.4165
学术水平
8 点
热心指数
5 点
信用等级
0 点
经验
2109 点
帖子
516
精华
0
在线时间
1493 小时
注册时间
2009-7-31
最后登录
2026-2-1

楼主
wudizhao 在职认证  发表于 2015-3-16 16:56:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
        请教论坛里的各位大牛们,我现在想做这样一个事情。我的数据库里有一列省份数据,我想对每个省份进行循环,如果有这个省份,我就按相应的代码生成省份虚拟变量。举个例子,我想设置一个字符串数组,里面有“北京 天津 重庆”,另外一个代码数组,里面对应“BJ TJ CQ”,如果province变量数据中包含“北京”,我就生成变量名为province_BJ的虚拟变量,其中省份包含“北京”的全为1,其他都为0。我大致写了一下程序,运行出来不正确,请大家帮忙改一下程序,多谢各位了!!我写的程序如下:

local vars "北京 天津 重庆"
local vars1 "BJ TJ CQ"
foreach v of local vars{
        if strpos(province,"v")>0 {
                gen province+"_"+vars1[v.i] = 0
                replace province+"_"+vars1[v.i] =1 if strpos(province,"v")>0
        }
}


二维码

扫码加我 拉你入群

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

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

关键词:Stata 生成变量 tata province foreach 数据库 字符串 local 北京 重庆

沙发
wudizhao 在职认证  发表于 2015-3-16 20:44:45
自己顶,谁能帮我一下哈

藤椅
天仕 在职认证  发表于 2015-3-17 14:06:22
这位兄弟似乎是编程出身的。

你可以试试下面这个程序:

local vars "北京 天津 重庆"
local vars1 "BJ TJ CQ"

local i = 0
foreach v in `vars' {
  di "`v'"
  local i = `i' + 1
  cap drop count_`i'
  g count_`i' = (strpos(province,"`v'")>0)
  list count_`i'
}

local i = 0
foreach v in `vars1' {
  di "`v'"
  local i = `i' + 1
  cap drop province_`v'
  count if count_`i' != 0
  if r(N) > 0 g province_`v' = count_`i'
}

事实上,在stata里面我更喜欢直接用stata现成的命令
tabulate province, generate(pro_dummy)
已有 1 人评分论坛币 热心指数 收起 理由
SpencerMeng + 20 + 1 观点有启发

总评分: 论坛币 + 20  热心指数 + 1   查看全部评分

板凳
wudizhao 在职认证  发表于 2015-3-17 16:28:22
天仕 发表于 2015-3-17 14:06
这位兄弟似乎是编程出身的。

你可以试试下面这个程序:
谢谢兄弟!!是这样兄弟,我为什么不用stata现成的命令,是因为我的省份里面有很多乱七八糟的字符,比如0000,----,aaaa 这种。我用tabulate试过,结果出来190个虚拟变量,但实际上省份虚拟变量也就只有三十多个。其他乱七八糟的那些字符我不知道该怎么处理,所以想自己编程把他写出来。你真是热心,再一次感谢你,希望可以和你多多交流!

报纸
wudizhao 在职认证  发表于 2015-3-17 17:08:48
天仕 发表于 2015-3-17 14:06
这位兄弟似乎是编程出身的。

你可以试试下面这个程序:
兄弟,请问里面的r(N)是什么意思?

地板
天仕 在职认证  发表于 2015-3-18 13:04:37
count就是数符合条件的样本数,r(N)就是数出来的结果。
你可以看 help count 最后一行。

7
彭揽策 发表于 2018-1-21 14:11:43
天仕 发表于 2015-3-17 14:06
这位兄弟似乎是编程出身的。

你可以试试下面这个程序:
你好,请问一下使用tabulate 显示too many values 该怎么办呢

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-4 03:54