楼主: jiangxinfeng
3496 9

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

  • 1关注
  • 11粉丝

已卖:54份资源

学科带头人

13%

还不是VIP/贵宾

-

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

楼主
jiangxinfeng 发表于 2013-2-13 19:20:42 |AI写论文

+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
下载链接: https://bbs.pinggu.org/a-1269860.html

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
拉您入交流群
GMT+8, 2025-12-30 05:49