经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
SAS专版
SAS时间提取
楼主
昂藏9
3864
3
收藏
2017-04-29
我有一组时间序列
2017-01-02这种
然后想提取年月
用data gaga.mer1;
set gaga.mer1;
month=substr(accper,1,7);
run;
跑出来虽然有这个变量,但是变量是空的,而且也没报错,怎么办
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
沙发
Strive、
2017-4-29 20:16:40
这是由于SAS中日期是以数值形式存储,而substr()函数则是作用于字符串。
建议使用year和month函数,后再拼接起来。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
藤椅
foocares
2017-4-29 22:56:34
这短短几行似乎把所有能犯的错都犯了也不容易啊,有时并不是说编译不报错就表示代码做了对的事。
你结果为空的最主要原因是,你在data步创建了一个新的临时数据集,接着又指定从同名的自己身上读记录...
读空值已经是SAS仁慈初始化的结果了,不然给你一堆内存里乱七八糟的数值更摸不着头脑。
再者,如楼上所言,很可能你用substr把一个原本是数值的日期变量强行弄成了字符,在自动数值型转换字符的过程中:
如果是符合数值格式的,那么按BASE12.格式而且要向右对齐,前头要补一串空格,这样的话你很可能读到的是空格;
要么就是2017-01-02被视为非法数值,直接转成空值作为源字符,你再提取当然为空。
最后,就算你侥幸拿对了原始日期转成了正确的字符格式,你调用substr的方法也值得商榷,你只想读月份,为啥要从第一个读起连读7位?那也不是你想要的月份结果啊。
至于正道,楼上大佬已经提了,先确保你读日期进来格式是对的,然后使用正确的姿势调用函数。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
板凳
Soleilmay
2017-5-6 00:13:53
可能發生的問題,以上兩位已經說明了。
variable正確輸入應有的variable type的情況下,你的日期格式應該要顯示圍靠左對齊的2017-01-02格式。
如果整個column排列不齊,因為Substr是從最左邊開始提取的,你很有可能提取到空白的部分。
此時,你可以採用month=substr(left(date), 6, 2);
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
求助 SUBSTR
[求助]如何把200401变成时间格式
substr函数能否是否倒着取字符?
求问R中的数据某一列拆分的方法
求助:如何拆分中文字符和非中文字符
关于SAS中日期相减问题,解决了一个问题
substr命令无法识别
时间是文字型怎么处理,前提是不把时间变到最后一列
为啥结果是z=600001?
指定某一个月的月初和月末
栏目导航
SAS专版
爱问频道
学道会
博弈论
经管高考
经管文库(原现金交易版)
热门文章
通用指标与场景指标:CDA数据分析师的核心分 ...
2024年合集 ESG评级数据大全(彭博 华证 Wi ...
技术趋势2026
2025年第四季度中国货币政策执行报告
复变函数专题选讲
数论II : 岩泽理论和自守形式 [日]黑川信重
CDA 认证考试大纲 2025 重磅更新:一二级考 ...
在概率与代码之间:Agent Skills 是 AI 的枷 ...
CDA数据分析脱产就业班于2026年3月7日开班! ...
参数估计:CDA数据分析师的核心推断工具,用 ...
推荐文章
2026JG学术冬训营:从Stata初高到Python机器 ...
【必看】【本版版规,欢迎发悬赏贴求助】
【新课】26年3月|Gemini辅助论文写作与数据 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群