全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4457 14
2011-02-11
原数据程序如下
复制代码
price1指的是昨日价格,今日价格用price表示,另外还要求出一个变量叫因子,公式是昨日价格/今日价格*昨日因子,因子初始值为1
我想要的结果是这样的:name date price1 price  yinzi
二维码

扫码加我 拉你入群

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

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

全部回复
2011-2-11 14:59:23
用一个笨办法,将date设为num,用滞后,效率不高,也许合乎要求:
data a;
input name $        date        price;
if name="a" then date2=lag(date);
    else if name="b" then date2=lag(date);
else;
cards;
a        20080101        23
a        20080102        43
a        20080103        134
a        20080104        43
a        20080105        243
a        20080106        43
a        20080107        32
a        20080108        4

b        20080101        324
b        20080102        3
b        20080103        43
b        20080104        23
b        20080105        3
b        20080106        32
;
run;
二维码

扫码加我 拉你入群

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

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

2011-2-11 15:05:42
2# yvh74 可是我的数据量有几百万,name有几千个名字
二维码

扫码加我 拉你入群

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

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

2011-2-11 15:06:12
呵呵,要不我笨呢。事实上电脑挺快的。我曾遇见过更大样本的数据,呵呵,笨办法搞定算了。
二维码

扫码加我 拉你入群

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

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

2011-2-11 15:39:34
再来一下(前提是日期连续):
data a;
input name $        date        price;
pr=price;
datelag=lag(date);
if date-datelag ne 1 then pr=.;
else;
cards;
a        20080101        23
a        20080102        43
a        20080103        134
a        20080104        43
a        20080105        243
a        20080106        43
a        20080107        32
a        20080108        4
b        20080101        324
b        20080102        3
b        20080103        43
b        20080104        23
b        20080105        3
b        20080106        32
;
run;

proc print;
run;

                                  1     a      20080101      23       .           .
                                  2     a      20080102      43      43    20080101
                                  3     a      20080103     134     134    20080102
                                  4     a      20080104      43      43    20080103
                                  5     a      20080105     243     243    20080104
                                  6     a      20080106      43      43    20080105
                                  7     a      20080107      32      32    20080106
                                  8     a      20080108       4       4    20080107
                                  9     b      20080101     324       .    20080108
                                 10     b      20080102       3       3    20080101
                                 11     b      20080103      43      43    20080102
                                 12     b      20080104      23      23    20080103
                                 13     b      20080105       3       3    20080104
                                 14     b      20080106      32      32    20080105
二维码

扫码加我 拉你入群

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

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

2011-2-11 15:45:08
5# yvh74 可是日期是不连续的,我做的是股票,股票周六周日是不开盘的,而且就算是连续的话,2月份的减去一月份的数据也不对啊,还有就是原数据里日期是字符型的。原数据是给你的,相当于直接用a这个数据集做分析。帖子我稍微修改了一下。呵呵不过辛苦了,非常感谢
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群