楼主: yayacuiliu
36745 7

[编程问题求助] Stata中数据转换格式转换问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
2.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2767 点
帖子
87
精华
0
在线时间
157 小时
注册时间
2008-9-16
最后登录
2021-12-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
Stata中数据格式的转换问题一直让我很头疼。我有两个数据库,同一个yeartime变量,都显示为yyyymm的格式,例如200110.
但是在一个数据库中为long %12.0g,另一个数据库中为float %tmCCYYNN.我要用yeartime 这个变量对两个数据库进行合并。数据格式无论如何转化都不行。请高手教教我怎么处理呢?
二维码

扫码加我 拉你入群

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

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

关键词:Stata 格式转换 tata 数据转换 float 格式转换

沙发
xingxf 发表于 2013-9-13 20:01:15 |只看作者 |坛友微信交流群
假设时间变量名为v1,显示为yyyymmdd的形式
对于v1是数字格式的情况,可用如下代码转换为Stata时间日期格式
gen year=int(v1/10000)
gen month=int((v1-year*10000)/100)
gen day=int((v1-year*10000-month*100))
gen date=mdy(month,day,year)
format date %td
对于v1是字符串格式的情况,可使用如下代码:
gen date=date(v1,"YMD")
format date %td
已有 6 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
煮酒声 + 1 + 1 + 1 精彩帖子
瑾264 + 1 + 1 精彩帖子
sucheng199099 + 3 精彩帖子
唐跃1992 + 1 + 1 + 1 精彩帖子
zj20000101 + 1 + 1 观点有启发
dxystata + 20 + 60 热心帮助其他会员

总评分: 经验 + 20  论坛币 + 60  学术水平 + 4  热心指数 + 7  信用等级 + 2   查看全部评分

使用道具

藤椅
yayacuiliu 发表于 2013-9-13 20:17:24 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-13 20:01
假设时间变量名为v1,显示为yyyymmdd的形式
对于v1是数字格式的情况,可用如下代码转换为Stata时间日期格式 ...
谢谢你回复啊!我被这个日期格式搞疯了要。我输入%td格式,为什么一转成月份数据就直接变样子了啊。例如
01nov1999在%td格式下面,但是一转成%tm的就变成3172m6。为什么会有这种问题出现啊,请你教教我吧!谢谢啦!
还有,如果将日期型数据转化为数值型或者字符型该怎么能保证显示跟之前的日期型数据是一致的。我用你提到的类似的方法将月份型数据2012022转化为字符型的,g begin=string(year(yeartime)*10^2+month(yeartime,"%6.0f"),结果出来的是196109,不知道怎么回事啊!

使用道具

板凳
dxystata 发表于 2013-9-14 05:44:37 |只看作者 |坛友微信交流群
学软件就是这样,等你得心应手后就好啦!

使用道具

报纸
xingxf 发表于 2013-9-14 09:34:24 |只看作者 |坛友微信交流群
yayacuiliu 发表于 2013-9-13 20:17
谢谢你回复啊!我被这个日期格式搞疯了要。我输入%td格式,为什么一转成月份数据就直接变样子了啊。例如
...
你第一个问题,把日数据变成月度数据:
还是假设时间变量名为v1
gen ym=mofd(v1)
format ym %tm
如果变成年度数据;
gen Year=year(DateAnnounced)
如果变成季度数据:
gen yq=qofd(DateAnnounced)

对于你第二个问题,保证所有日期数据格式一直,最好的方法是吧各种格式的(字符串的,数字的)转变为Stata日期格式。

对于你第三个问题,我没看懂2012022是什么意思。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
夜深督梦 + 1 + 1 + 1 精彩帖子

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

使用道具

地板
yayacuiliu 发表于 2013-9-14 16:21:13 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-14 09:34
你第一个问题,把日数据变成月度数据:
还是假设时间变量名为v1
gen ym=mofd(v1)
第三个问题啊,是我手抖打错了,是201202。

使用道具

7
夜深督梦 学生认证  发表于 2020-6-8 23:29:05 |只看作者 |坛友微信交流群
xingxf 发表于 2013-9-14 09:34
你第一个问题,把日数据变成月度数据:
还是假设时间变量名为v1
gen ym=mofd(v1)
太感谢大佬了,解决了我的困扰

使用道具

8
wfx21 发表于 2024-2-28 15:53:36 |只看作者 |坛友微信交流群
遇到了同样困难,感谢您的提问!这是因为date()这一函数是日期型函数,如果输入yy-mm将会自动补日期为默认1号,那么这时候转化成%tm则会转为距离1960XX月(而不是天)的时间从而导致错误。此时应该补充一步将date得到的日期型再以mofd()转化为月度型,再进行format调整。感谢您!
参考:https://blog.csdn.net/weixin_39834149/article/details/112113277

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 02:58