楼主: jackyneer
9445 10

[数据管理求助] stata 如何将两个变量的变量值整合到第三个变量的变量值上? [推广有奖]

  • 0关注
  • 2粉丝

已卖:495份资源

博士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
7708 个
通用积分
14.6013
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
22608 点
帖子
100
精华
0
在线时间
343 小时
注册时间
2012-4-8
最后登录
2024-9-26

楼主
jackyneer 发表于 2017-5-11 23:48:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如下:有两个变量a 和b两个变量,生成第三个变量c后,如何把a和b年的数据整合到带三个变量c,也就是如果a有观测值,则c的值则等于相应的a观测值,如果没有,则赋予c相应的b的观测值。出入论坛,没有论坛币悬赏。。大写的尴尬。请各位大神指教,不慎感激,谢谢。

ID   a             b                 c
  1   1996                               1996
  2                   1990               1990
  3   1962                               1962
  4   1964              1952          1964
  5   1998                               1998


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 变量值 数据整合 观测值 如何

回帖推荐

蓝色 发表于7楼  查看完整内容

没有问题可以执行啊 . . gen c=a . list +-------------------------+ | ID a b c | |-------------------------| 1. | 1 1996 . 1996 | 2. | 2 45 1990 45 | 3. | 3 1962 . 1962 | +-------------------------+ . replace c =b if a

黃河泉 发表于3楼  查看完整内容

試試

沙发
dxc3496 在职认证  发表于 2017-5-12 04:35:36
if循环

藤椅
黃河泉 在职认证  发表于 2017-5-12 07:10:30
試試
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(ID a b)
  4. 1 1996    .
  5. 2    . 1990
  6. 3 1962    .
  7. 4 1964 1952
  8. 5 1998    .
  9. end
复制代码
  1. gen c = a
  2. replace c = b if a == .
复制代码

板凳
蓝色 发表于 2017-5-12 09:27:26
看到 楼上 黄老师写的命令了吧,这可是最基础的命令。

如果这还需要求助
建议最好是先买本Stata的书看看。
否则其他更复杂的,更难解决

报纸
jackyneer 发表于 2017-5-12 09:36:39
黃河泉 发表于 2017-5-12 07:10
試試
非常感谢

地板
jackyneer 发表于 2017-5-12 09:53:29
蓝色 发表于 2017-5-12 09:27
看到 楼上 黄老师写的命令了吧,这可是最基础的命令。

如果这还需要求助
额,不忙您说,真的很感谢黄老师的回复,也谢谢您的建议。
我还有个疑问:
ID    a          b           c
1   1996                 1996
2    45        1990    1990
3   1962                 1962
.......假设a,b 均表示年份,其中a的值有的为零或者低于1900的数字,那么这种情况又该如何处理呢?
gen c=a
replace c =b if a<1900
但这种命令却无法运行,因为昨天试了好几次,请问您有什么办法解决呢。。
还有一个问题,就是如果变量值里有   *  这个符号,怎么都替换不了,而且还是 nonnumerical characters。。
不慎感激!!

7
蓝色 发表于 2017-5-12 10:23:35
jackyneer 发表于 2017-5-12 09:53
额,不忙您说,真的很感谢黄老师的回复,也谢谢您的建议。
我还有个疑问:
ID    a          b         ...

没有问题可以执行啊


.
. gen c=a

. list

     +-------------------------+
     | ID      a      b      c |
     |-------------------------|
  1. |  1   1996      .   1996 |
  2. |  2     45   1990     45 |
  3. |  3   1962      .   1962 |
     +-------------------------+

. replace c =b if a<1900
(1 real change made)

. list

     +-------------------------+
     | ID      a      b      c |
     |-------------------------|
  1. |  1   1996      .   1996 |
  2. |  2     45   1990   1990 |
  3. |  3   1962      .   1962 |
     +-------------------------+

8
jackyneer 发表于 2017-5-12 10:34:49
蓝色 发表于 2017-5-12 10:23
没有问题可以执行啊
刚刚又试了下,把那些变量值 * 替换了以后,转换成数字型的变量就可以了
replace a="0" if  if !regexm(a, "^[0-9]*[0-9][0-9][0-9]") == 1
destring a
非常感谢

9
skylandocean 在职认证  发表于 2018-5-27 21:14:36
黃河泉 发表于 2017-5-12 07:10
試試
这个对于日期型的变量好像不行啊,会变成numeric data

10
黃河泉 在职认证  发表于 2018-5-28 07:53:01
skylandocean 发表于 2018-5-27 21:14
这个对于日期型的变量好像不行啊,会变成numeric data
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

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

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