楼主: jiangxinfeng
2957 9

[编程问题求助] 选取最小日期问题求助 [推广有奖]

  • 1关注
  • 11粉丝

学科带头人

13%

还不是VIP/贵宾

-

威望
1
论坛币
1569 个
通用积分
52.3012
学术水平
16 点
热心指数
21 点
信用等级
8 点
经验
111655 点
帖子
961
精华
0
在线时间
2106 小时
注册时间
2009-9-10
最后登录
2024-2-3

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
sample是dta格式的,请下载之后改一下~
我有一个变量是字符串型的,表示的是日期。而且数据是这样的,一个格里面有几个数据。
例如
accper
2009-10-11
2008-11-21,2009-12-22
2009-09-11,2006-08-11

现在的问题是,我想精简这个变量如下格式。
accper
2009-10-11
2008-11-21
2006-08-11

也就是说,只有一个时间的就留下,有两个时间的,留下一个,而且要时间早的那个。
各位看看怎么处理呢 sample.xls (28.82 KB) QQ截图20130213191318.png
二维码

扫码加我 拉你入群

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

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

关键词:Sample CCPER ACCP AMPL 怎么处理 字符串 而且

QQ截图20130214212809.png (42.33 KB)

QQ截图20130214212809.png

sample.rar

2.49 KB

本附件包括:

  • sample.dta

沙发
sungmoo 发表于 2013-2-14 17:59:59 |只看作者 |坛友微信交流群
*所附文件中,日期有"00",这对应当月哪天?

*若原数据中各值排列很“齐整”,可用(特殊方法)
g s=date(substr(start,-10,.),"YMD")
form s %td

使用道具

藤椅
jiangxinfeng 发表于 2013-2-14 21:41:15 |只看作者 |坛友微信交流群
sungmoo 发表于 2013-2-14 17:59
贴出部分数据(需要明确其中的字符具体是什么)。
谢谢sungmoo版主。
我上面贴出的变量是高管任职的起始年月(数据库的规则是,无法确定具体月、日的,用00表示)。由于同一高管有可能身兼数职,于是同一人的职务的起始年就可能对应有两个或者三个。我想从中取出最先开始的日期。日期是字符串。
修改过的图片中第一列是高管任职的具体职务,第二列对应的是不同职务的开始日期。

使用道具

板凳
蓝色 发表于 2013-2-15 02:22:49 |只看作者 |坛友微信交流群
clear
input ///
str64 accper
2009-10-11
2008-11-21,2009-12-22
2009-09-11,2006-08-11
end
split accper ,parse(,)

replace accper1=accper2  if (date(accper1,"YMD")>date(accper2,"YMD")) & accper2~=""

使用道具

报纸
jiangxinfeng 发表于 2013-2-15 09:49:41 |只看作者 |坛友微信交流群
sungmoo 发表于 2013-2-14 17:59
贴出部分数据(需要明确其中的字符具体是什么)。

所附文件打不开。
已经重新上传了一份压缩文件!解压就可以了!谢谢!

使用道具

地板
jiangxinfeng 发表于 2013-2-15 10:03:52 |只看作者 |坛友微信交流群
蓝色 发表于 2013-2-15 02:22
clear
input ///
str64 accper
谢谢蓝色版主!这样可以!但数据里面还有一列包含四个日期的,请问这样怎么选择最小的日期呢?
比如
accper
2005-11-11,2009-02-14,2008-11-21,2009-12-22
2003-10-23,2009-12-22
2009-12-25

使用道具

7
蓝色 发表于 2013-2-15 12:34:45 |只看作者 |坛友微信交流群
clear
input ///
str64 accper
2005-11-11,2009-02-14,2008-11-21,2009-12-22
2003-10-23,2009-12-22
2009-12-25
end
split accper ,parse(,)

foreach var of var accper1-accper4{
    gen `var'_d=date(`var',"YMD")
        }

egen accper_min=rmin(accper1_d accper2_d accper3_d accper4_d)

format accper_min %tdCCYY-NN-DD

使用道具

8
jiangxinfeng 发表于 2013-2-15 20:48:14 |只看作者 |坛友微信交流群
sungmoo 发表于 2013-2-14 17:59
*所附文件中,日期有"00",这对应当月哪天?

*若原数据中各值排列很“齐整”,可用(特殊方法)
谢谢sungmoo版主!
这个数据是这样的,无法知道具体月份和日期的,都是用00来表示的。也就是1994-00-00就是只知道是1994年变更的,但不知道具体的日期。这样的一个问题就是date函数无法使用。。。我的想法是将月份的00替换为06,日的00替换成25。然后再进行您贴出的操作。不知道有没有什么方法么?谢谢!!

使用道具

9
jiangxinfeng 发表于 2013-2-15 21:45:39 |只看作者 |坛友微信交流群
sungmoo 发表于 2013-2-14 17:59
*所附文件中,日期有"00",这对应当月哪天?

*若原数据中各值排列很“齐整”,可用(特殊方法)
感谢sungmoo版主,问题我已经解决啦,谢谢你!

使用道具

10
jiangxinfeng 发表于 2013-2-15 21:46:17 |只看作者 |坛友微信交流群
蓝色 发表于 2013-2-15 12:34
clear
input ///
str64 accper
感谢蓝色版主!问题已解决!!感谢!

使用道具

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

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

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

GMT+8, 2024-5-17 23:24