全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2658 10
2012-10-17
悬赏 10 个论坛币 已解决
大家好,我的问题是这样的,在统计一些连续变量时,如果变量不是正态分布,要对变量进行log转换后再作统计分析,通常是在data里面将var生成新的变量log_var=log(var); 然后在proc 步作回归分析或相关分析.proc corr data=a;
var log_var;
with a;
run;

可是如果原数据集比较大,在原数据集里生成新变量就要花很长时间,有没有办法不对原数据集处理,只在proc步里面对原来的var函数计算后再统计,当然,直接用log(var)是不行的。

最佳答案

ziyenano 查看完整内容

有很多数据集?可以的话,建立一个temp,只保留需要计算的字段,每循环一次,计算另一个数据集,更新这个temp。 在过程步中加计算,确实不知道可行不可行。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-17 13:12:50
Imasasor 发表于 2012-10-17 13:25
因为原数据集比较大,
data a;
set a;
有很多数据集?可以的话,建立一个temp,只保留需要计算的字段,每循环一次,计算另一个数据集,更新这个temp。
在过程步中加计算,确实不知道可行不可行。
二维码

扫码加我 拉你入群

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

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

2012-10-17 13:20:04
貌似不行;
不过话说回来,即使可以做,corr过程不还是先得计算log(var),然后再计算相关系数;
这个步骤免不了,放在data步中运行,也就没有浪费不浪费时间的问题了。
二维码

扫码加我 拉你入群

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

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

2012-10-17 13:25:03
ziyenano 发表于 2012-10-17 13:20
貌似不行;
不过话说回来,即使可以做,corr过程不还是先得计算log(var),然后再计算相关系数;
这个步骤 ...
因为原数据集比较大,
data a;
set a;
var_log=log(var);
run;
就这么简单的一个程序,就要将原数据集重新复制一遍,感觉太浪费时间了,我做的是一个宏的多个循环,这样的话对每个要计算的var都这么弄一遍。
二维码

扫码加我 拉你入群

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

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

2012-10-17 13:53:04
Imasasor 发表于 2012-10-17 13:25
因为原数据集比较大,
data a;
set a;
data和set子句相同的时候,数据集是不用复制的吧
你这段代码在SAS里就是秒算吧,花不了多少时间的吧
二维码

扫码加我 拉你入群

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

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

2012-10-17 14:00:40
ziyenano 发表于 2012-10-17 13:51
有很多数据集?可以的话,建立一个temp,只保留需要计算的字段,每循环一次,计算另一个数据集,更新这个 ...
我后来也是想的您的这种方法,我觉得这样比较可行!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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