楼主: angelqii
9335 5

[数据管理求助] 关于日期型数据的处理 [推广有奖]

  • 0关注
  • 2粉丝

高中生

37%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
13.6401
学术水平
6 点
热心指数
17 点
信用等级
6 点
经验
508 点
帖子
21
精华
0
在线时间
24 小时
注册时间
2010-9-12
最后登录
2019-9-16

楼主
angelqii 发表于 2014-4-24 15:15:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
日期数据处理

如图所示,下载下来的数据日期变量的类型为int,format为%td。表明该变量是日期型数据。
我只想保留年度数据,也就是31dec2007、31dec2008等这样的观测案例,
输入命令:keep if date==31dec2007  
出现错误提示:31dec2007 invalid name  r(198);


感觉是,日期型数据不能像数值型数据那样,可以用if date==31dec2007这样的语句。当然,也无法使用字符匹配函数strmatch()。


我应该怎么做才能达到我想要的结果呢?
PS:可以的话,请大神们详细讲一下日期型数据的相关运算,或者在if句怎么被选取成功。
另字符型数据的type会出现str5、str10、str21这样的,如何修改,比如把str5改成str10


上例我曾试过:tostring date, replace 然后再用strmatch()选择,
但是显示date变量直接变成了17256(str5的字符型数据)。不知道为什么?求解啊。。。


二维码

扫码加我 拉你入群

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

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

关键词:日期型 tostring replace invalid format invalid 如图所示

沙发
angelqii 发表于 2014-4-24 15:33:18
哦,我大约知道为什么将日期型数据转化为字符型数据时会是str5的字符了。应该改日期型数据本身就是一串排列好的数字,17256代表的就是30mar2007。
但还是不知道怎么选中或者提取出一部分日期型数据删掉或保留。

藤椅
hplcdadong 发表于 2014-4-26 04:00:11
This may be what you want:

gen year=year(date)
bysort year: keep if _n==_N

板凳
hplcdadong 发表于 2014-4-26 04:06:57
Sorry, should be this:

gen year=year(date)
bysort year (date): keep if _n==_N
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
山河涧库 + 1 + 1 + 1 精彩帖子
葫芦娃大王 + 10 + 10 精彩帖子
crystal8832 + 10 + 10 + 1 + 1 观点有启发

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

报纸
angelqii 发表于 2014-5-22 14:08:29
hplcdadong 发表于 2014-4-26 04:06
Sorry, should be this:

gen year=year(date)
thx.
由于年份不是很多,先把日期数据转化成%td的形式,我把每个代表年末的数值筛选出来,然后keep语句,就得到了我想要的数据。
不过,你的方法也很简单。谢谢哈!

地板
wangguoping2013 发表于 2014-5-27 08:25:29
提示: 该帖被管理员或版主屏蔽  crystal8832 违反论坛规定 2014-5-27 19:38

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-24 12:11