楼主: yinpeiwei
12161 4

[数据管理求助] 如何将字符串格式的日期更改为数值型 [推广有奖]

  • 1关注
  • 11粉丝

副教授

35%

还不是VIP/贵宾

-

威望
0
论坛币
5279 个
通用积分
391.5043
学术水平
2 点
热心指数
8 点
信用等级
0 点
经验
16347 点
帖子
445
精华
0
在线时间
746 小时
注册时间
2010-4-13
最后登录
2024-4-22

5论坛币
各位大侠、老师:
      我将.csv格式文件导入stata后,发现变量date项下所有的观测值均默认显示为字符串型,如何更改为数值型呢?我的指令如下,可以实现,但颇为繁琐,数据和指令如下,烦请指教。非常感谢。
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 date float gdp_c
  4. "1992q1" 10884.5
  5. "1992q2" 12964.8
  6. "1992q3" 14377.1
  7. "1992q4" 16133.4
  8. "1993q1" 12549.8
  9. end
复制代码

  1. clear all
  2. cd D:\replenish

  3. insheet using gdp_c.csv,comma names

  4. gen year=substr(date,1,4)
  5. gen quarter=substr(date,5,2)
  6. gen month=0
  7. replace month=03 if quarter=="q1"
  8. replace month=06 if quarter=="q2"
  9. replace month=09 if quarter=="q3"
  10. replace month=12 if quarter=="q4"
  11. tostring month,replace
  12. replace month="03" if quarter=="q1"
  13. replace month="06" if quarter=="q2"
  14. replace month="09" if quarter=="q3"
  15. replace month="12" if quarter=="q4"
  16. gen quarter_new=year+month
  17. drop year quarter month
  18. gen ym=date(quarter_new,"YM")
  19. format %td ym
  20. gen ym_2=qofd(ym)
  21. format ym_2 %tq
  22. drop date quarter_new ym
  23. rename ym_2 date
  24. save gdp_c.dta,replace
复制代码



最佳答案

黃河泉 查看完整内容

请 ssc install numdate, 试试
关键词:数值型 字符串 generated tostring generate stata 字符串型日期更改为数值型
沙发
黃河泉 在职认证  发表于 2019-8-30 08:52:50 |只看作者 |坛友微信交流群
请 ssc install numdate, 试试
  1. numdate quarterly yq = date, pattern(YQ)
复制代码

使用道具

藤椅
蓝色 发表于 2019-8-30 09:09:07 |只看作者 |坛友微信交流群
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 date float gdp_c
  4. "1992q1" 10884.5
  5. "1992q2" 12964.8
  6. "1992q3" 14377.1
  7. "1992q4" 16133.4
  8. "1993q1" 12549.8
  9. end

  10. gen yq=quarterly(date,"YQ")
  11. format yq %tq
  12. list
复制代码


  1. . * Example generated by -dataex-. To install: ssc install dataex
  2. . clear

  3. . input str6 date float gdp_c

  4.           date      gdp_c
  5.   1. "1992q1" 10884.5
  6.   2. "1992q2" 12964.8
  7.   3. "1992q3" 14377.1
  8.   4. "1992q4" 16133.4
  9.   5. "1993q1" 12549.8
  10.   6. end

  11. .
  12. . gen yq=quarterly(date,"YQ")

  13. . format yq %tq

  14. . list

  15.      +---------------------------+
  16.      |   date     gdp_c       yq |
  17.      |---------------------------|
  18.   1. | 1992q1   10884.5   1992q1 |
  19.   2. | 1992q2   12964.8   1992q2 |
  20.   3. | 1992q3   14377.1   1992q3 |
  21.   4. | 1992q4   16133.4   1992q4 |
  22.   5. | 1993q1   12549.8   1993q1 |
  23.      +---------------------------+
复制代码


使用道具

板凳
yinpeiwei 在职认证  发表于 2019-9-1 18:50:24 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-8-30 09:05
请 ssc install numdate, 试试
谢谢黄河泉博主第一时间给出的专业指导。根据您的建议,我ssc install numdate并help numdate,发现numdate函数很强大,不仅能解决我的问题,类似的问题均有答案。我最终通过以下指令很简洁地完成了转换:

  1. numdate quarterly q1=date,pattern(YQ)
复制代码

使用道具

报纸
yinpeiwei 在职认证  发表于 2019-9-1 18:52:29 |只看作者 |坛友微信交流群
感谢黄河泉博主和二楼“蓝色”热心博友的解答,上述建议均很好地解决了我的问题。很简洁很给力。点赞。

使用道具

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

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

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

GMT+8, 2024-5-13 07:03