楼主: melody21
2100 3

sas code求解:用do loop 实现将具体日期转换为周 [推广有奖]

  • 4关注
  • 6粉丝

已卖:5份资源

讲师

49%

还不是VIP/贵宾

-

威望
0
论坛币
3199 个
通用积分
462.0354
学术水平
36 点
热心指数
48 点
信用等级
36 点
经验
138 点
帖子
349
精华
0
在线时间
544 小时
注册时间
2007-7-14
最后登录
2023-2-4

楼主
melody21 发表于 2013-8-22 01:13:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,
数据中的日期变量(date) 记载每个观测值的发生日期,现在我想要新建一个周变量(week)以帮助实现对观测值的按周分析。
样本数据中时间跨度不算太长(共10周),一系列if...then也能实现,可是这个方法太笨了,更重要的是可能应付不了时间跨度达全年的数据,所以就想用do loop来做,但是算出来的结果不对。
我的code如下, 还请各位指导!
data aa;
set aa;
if input('1/2/2013', MMYYDD10.) <= date <= input('1/4/2013', MMYYDD10.) then week=1;
else
std= input('1/7/2013", MMYYDD10.); endd= input('1/11/2013', MMYYDD10.);
if std<= date <= endd then week=2;
else
week=2;
do i =1 to 8;
if std+7*i <= date <= endd+7*i  then week= week+1;
end;
run;


二维码

扫码加我 拉你入群

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

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

关键词:code 日期转换 loop COD ODE 新建 样本

沙发
tangliang0905 发表于 2013-8-22 01:25:49
你可以使用week这个function啊


data test;
do i= 1 to 365;
date=mdy(12,31,2012)+i;
week=week(date);
output;
format date mmddyy10.;
end;
run;


已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
melody21 + 1 + 1 + 1 热心帮助其他会员
reduce_fat + 29 + 1 热心帮助其他会员

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

藤椅
melody21 发表于 2013-8-22 04:10:27
谢谢楼上的快速解答! 有两个问题再请教下:
1。
运用了楼上提供的code,发现date中多出了周末日的信息,而我的数据只是根据工作日(除1/2日周是周三至周五,其余都是周一至周五)提取周信息;所以,这样多出的周六周日时间如何有效剔除?
2。
出来的week初始值为0,想要week从1开始,再怎么改?

谢谢!

板凳
tangliang0905 发表于 2013-8-22 09:22:10
嘿嘿,我只是提供一个思路而已。
要是考虑到周末的问题,可以再使用weeekday这个function,但是这里要注意的是,礼拜天值是1,礼拜六的值是7.而一年星期是从0开始的话,我们只要在星期的值后面加1就可以了。





data test;
do i= 1 to 365;
date=mdy(12,31,2012)+i;
week=week(date)+1;
day=weekday(date);
output;
format date mmddyy10.;
end;
run;

data test2;
set test;
if 2<=day<=6;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 09:04