楼主: shj981222
18265 18

【请教】如何用weekday函数求星期几、为什么我的错了 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

98%

还不是VIP/贵宾

-

威望
0
论坛币
17 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1863 点
帖子
303
精华
0
在线时间
81 小时
注册时间
2008-1-8
最后登录
2014-5-5

楼主
shj981222 发表于 2008-3-23 20:58:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

比如我的临时数据集a里有日期变量y,y的格式例如今天为:20080323,为什么用函数weekday得出来的是缺失值?比如编程:  data a; set a; weekday=weekday(y); run;     为什么这样得出来的weekday都是缺失值?即使是之前加上一句把y标准化为日期型的语句也还是一样,为什么?应该是很简单的,就是转不过来,请高手指点,谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:weekday Week Day 如何用 高手指点 函数 weekday

回帖推荐

olover 发表于9楼  查看完整内容

data temp; data  = "20080228"; newdata = input(data, yymmdd10.); day = weekday(newdata);run;proc print;run; [此贴子已经被作者于2008-3-25 4:11:46编辑过]

wolfcrying 发表于8楼  查看完整内容

这是因为你根本还没理解SAS关于日期的存储方式,SAS存日期是以1960年1月1日为0,往后一天加1,1960年1月2日存在系统里的值就是2, 以此类推。但17590到底是哪年哪月哪日呢,为了方便看,SAS在打印时,往往对值施加一个格式,通过格式将存储的值显示为字符串。希望以下程序能帮助你理解data b;y='20080228';  yy=substr(y,1,4);  mm=substr(y,5,2);   dd=substr(y,7,2);date=mdy(mm,dd,yy);   date2= ...

本帖被以下文库推荐

To be rong is fine, but to stay rong is unforgivable.

沙发
wyying 发表于 2008-3-23 22:25:00
nothing

[此贴子已经被作者于2008-3-25 12:29:16编辑过]

藤椅
shj981222 发表于 2008-3-23 23:12:00

谢谢

其实前面那个变量名是无关紧要的,用weekday也应该可以,问题好像不在这里,不知怎么回事,谢谢你了
To be rong is fine, but to stay rong is unforgivable.

板凳
kkwei 发表于 2008-3-23 23:43:00
这简单……你用了盗版的,或者用了这个版上的那个时间破解补丁修改了日期,这样使用函数取出的数字就是错误的……嘿嘿……

报纸
shj981222 发表于 2008-3-24 08:35:00

啊?是把我电脑的系统日期改了的,那怎么办呢,有没有解决的方法,还望高手赐教,将不胜感激!谢谢!

[此贴子已经被作者于2008-3-24 8:39:23编辑过]

To be rong is fine, but to stay rong is unforgivable.

地板
kkwei 发表于 2008-3-24 09:08:00
用正版软件就是换一个未过期的license

7
kkwei 发表于 2008-3-24 09:11:00
用正版软件就是换一个未过期的license

8
wolfcrying 发表于 2008-3-24 23:40:00

这是因为你根本还没理解SAS关于日期的存储方式,SAS存日期是以1960年1月1日为0,往后一天加1,1960年1月2日存在系统里的值就是2, 以此类推。

但17590到底是哪年哪月哪日呢,为了方便看,SAS在打印时,往往对值施加一个格式,通过格式将存储的值显示为字符串。

希望以下程序能帮助你理解

data b;
y='20080228';  yy=substr(y,1,4);  mm=substr(y,5,2);   dd=substr(y,7,2);
date=mdy(mm,dd,yy);   date2=date;
format date2 yymmddn8.;
day=weekday(date);run;

proc print;run;

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

9
olover 发表于 2008-3-25 04:06:00

data temp;
 data  = "20080228";
 newdata = input(data, yymmdd10.);
 day = weekday(newdata);
run;

proc print;run;

[此贴子已经被作者于2008-3-25 4:11:46编辑过]

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

10
shj981222 发表于 2008-3-25 10:39:00

谢谢指点,感觉理解了上面你们给的解答,可为什么用上面wolfcrying和olover的程序得出来的是星期五,而事实上20080228却是星期四,为什么?谢谢!

To be rong is fine, but to stay rong is unforgivable.

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

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