导入2.csv,用sas进行如下操作: a、计算股票的日百分比收益率;提示:滞后函数为 lag(var) b、对相关数据进行重命名,以使得变量名符合你的习惯,给相关变量贴标签;rename old=new c、分别使用drop 和keep语句,保存如下数据:股票收益率,股票名称,日期 d、使用merge 语句将两个数据集合并。 e、使用set、output语句将不同股票的数据分拆成不同的数据集。
时间: 2023-03-30 13:03:35 浏览: 186
a、可以使用以下代码计算股票的日百分比收益率:
data stocks;
set '2.csv'n;
by stock_name;
retain prev_close;
if first.stock_name then prev_close = close;
daily_return = (close - prev_close) / prev_close;
prev_close = close;
run;
其中,'2.csv'n 是导入的数据集名称,stock_name 是股票名称,close 是当日收盘价,daily_return 是日百分比收益率。
b、可以使用以下代码对相关数据进行重命名:
rename stock_name=股票名称 close=收盘价 daily_return=日收益率;
c、可以使用以下代码分别使用 drop 和 keep 语句,保存股票收益率、股票名称和日期:
data stocks2(drop=open high low volume) ;
set stocks(keep=stock_name date daily_return);
run;
其中,open、high、low、volume 是不需要的变量,可以使用 drop 语句删除,keep 语句保留需要的变量。
d、可以使用以下代码使用 merge 语句将两个数据集合并:
data stocks3;
merge stocks2(in=stocks2) stocks_info(in=stocks_info);
by stock_name date;
if stocks2 and not stocks_info then delete;
run;
其中,stocks2 是保存股票收益率、股票名称和日期的数据集,stocks_info 是保存股票信息的数据集,by 语句指定合并的键值,delete 语句删除不匹配的记录。
e、可以使用以下代码使用 set、output 语句将不同股票的数据分拆成不同的数据集:
data _null_;
set stocks3;
by stock_name;
if first.stock_name then do;
if _n_ > 1 then call execute('run;');
call execute('data ' || quote(trim(stock_name)) || ';');
call execute('output;');
end;
call execute('set stocks3;');
call execute('output;');
if last.stock_name then call execute('run;');
run;
其中,_null_ 数据集不会保存任何数据,by 语句指定分组键值,if 语句判断是否为每个股票的第一条记录,call execute 语句动态生成代码,quote 函数将股票名称加上引号,output 语句保存数据,last 语句判断是否为每个股票的最后一条记录。
阅读全文