楼主: fhr19
7872 15

[原创博文] Sas 变量类型的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

82%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
265 点
帖子
32
精华
0
在线时间
22 小时
注册时间
2012-2-21
最后登录
2012-8-21

楼主
fhr19 发表于 2012-2-21 02:44:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

01/02/2009是什么样类型的变量?

用data = compress(Capital_IQ_Transaction_Screening,'/'); 可以把变量中的‘/’去掉。

问题是怎么能将01/02/2009仅仅保留2009?还有就是附件中有两行变量 Capital_IQ_Transaction_Screening 和 var8怎么样才能把这两行变量相加减求出之间的日期间隔的天数(数值型)

还有var19如何可以只保留所有变量的前两位,保存为数值型变量。

第一次发帖,先谢过各位牛牛:)

二维码

扫码加我 拉你入群

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

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

关键词:变量类型 Transaction screening compress Capital 如何

回帖推荐

fhr19 发表于4楼  查看完整内容

用了一个比较笨的办法求出了时间间隔,大家可以看看code是否有问题: data a; set 'C:\Users\feng\Desktop\haw project\sas assi\rawdata8.sas7bdat'; data = compress(Capital_IQ_Transaction_Screening, '/'); date= input (Capital_IQ_Transaction_Screening, mmddyy10.) ; informat date mmddyy10.; drop Capital_IQ_Transaction_Screening; run; data a; set a; data1 = compress(var8, '/'); date1= input (va ...

本帖被以下文库推荐

沙发
yuzaiyangpeter 发表于 2012-2-21 02:59:48
01/02/2009应该是numeric吧,读取的时候可以用mmddyy10.
SAS里边有个function应该是可以读取变量的一部分的,默认值为0时可以从右边开始读取。这里你可以使得01/02/2009为character,从右边读四位就行了。函数我真不太记得了。。。晚上回去帮你查查~~
日期间隔的话是有个function可以直接求出来,应该是yrdif()。
我也是新手~~~

藤椅
fhr19 发表于 2012-2-21 03:04:52
yuzaiyangpeter 发表于 2012-2-21 02:59
01/02/2009应该是numeric吧,读取的时候可以用mmddyy10.
SAS里边有个function应该是可以读取变量的一部分的 ...
thanks so much, the best thing s to run the dataset:) cus i have already confused here for like the whole morning. thanks so much. looking forward further information:)

板凳
fhr19 发表于 2012-2-21 03:21:37
用了一个比较笨的办法求出了时间间隔,大家可以看看code是否有问题:
data a;
set  'C:\Users\feng\Desktop\haw project\sas assi\rawdata8.sas7bdat';
data = compress(Capital_IQ_Transaction_Screening, '/');
date= input (Capital_IQ_Transaction_Screening, mmddyy10.) ;
informat date mmddyy10.;
drop Capital_IQ_Transaction_Screening;
run;

data a;
set a;
data1 = compress(var8, '/');
date1= input (var8, mmddyy10.) ;
informat date1 mmddyy10.;
drop var8;
run;

data a;
set a;
time=date1-date;
run;
但是还是有保留问题,怎么把01/02/2009保留成2009.
把6769 financial service这样的变量只保留前两位变成67?
谢谢各位牛牛:)
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

报纸
456852 发表于 2012-2-21 03:29:26
fhr19 发表于 2012-2-21 03:21
用了一个比较笨的办法求出了时间间隔,大家可以看看code是否有问题:
data a;
set  'C:\Users\feng\Deskt ...
用scan和substr

地板
fhr19 发表于 2012-2-21 03:43:53
456852 发表于 2012-2-21 03:29
用scan和substr
果然是牛牛,用substr解决了问题,但是还是很想知道在先前算两个日期之间的天数时候有没有简洁一点的办法,因为貌似我的原始数据的日期值,不是日期型,因为我尝试用datdif之类的函数貌似不是很管用,真心谢谢各位哥哥姐姐的执教:)

7
yuzaiyangpeter 发表于 2012-2-21 04:14:14
year()好像是可以读取日期的年份~

8
fhr19 发表于 2012-2-21 04:55:49
yuzaiyangpeter 发表于 2012-2-21 04:14
year()好像是可以读取日期的年份~
yes, but when i use that it doesnt work. i think it might be cus of my date tye s not date but numeric?
thanks so much for your prompt response:)

9
456852 发表于 2012-2-21 05:36:13
fhr19 发表于 2012-2-21 04:55
yes, but when i use that it doesnt work. i think it might be cus of my date tye s not date but num ...
这个变量的类型你可以用proc contents或者直接右键看属性,我怀疑是字符型的。
另外,技术上讲,numeric和date这两个format,后者是前者的子集。

10
yuzaiyangpeter 发表于 2012-2-21 05:59:03
你的那个excel我看了,我直接把那些dates format成mmddyy10.时会报错,我也不知道为啥(proc contens看到他们的format是$20.)。。。我觉着你可不可以就把这些dates用scan全部拆分成month(),day(),year(),然后再用mdy()把他们组合成日期的形式。。。这样看起来比较麻烦。。。然后再用yrdif()应该就没问题了。

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

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