全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
38186 7
2013-09-13
Stata中数据格式的转换问题一直让我很头疼。我有两个数据库,同一个yeartime变量,都显示为yyyymm的格式,例如200110.
但是在一个数据库中为long %12.0g,另一个数据库中为float %tmCCYYNN.我要用yeartime 这个变量对两个数据库进行合并。数据格式无论如何转化都不行。请高手教教我怎么处理呢?
二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

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,不知道怎么回事啊!
二维码

扫码加我 拉你入群

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

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

2013-9-14 05:44:37
学软件就是这样,等你得心应手后就好啦!
二维码

扫码加我 拉你入群

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

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

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是什么意思。
二维码

扫码加我 拉你入群

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

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

2013-9-14 16:21:13
xingxf 发表于 2013-9-14 09:34
你第一个问题,把日数据变成月度数据:
还是假设时间变量名为v1
gen ym=mofd(v1)
第三个问题啊,是我手抖打错了,是201202。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群