全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3795 13
2011-06-17
很简单的程序。我有一个800万观测值的数据集,其中有这样两个变量,姑且命名为a和b
每个观测值,a可以是a1,a2,a3等等,我大概看了一下,应该有100万+可能的a值。
对于b,也一样可能是b1,b2,b3等等,我无法知道有多少可能性,但是估计应该比a多。
我想计算一下以a*b分类的变量各有多少?

也就是说,如果n个观测值,都属于a1,也都属于b2,那么他们就是一类。计数是n
同属于a1,但是有的是b3,有的是b7,就不是一类。
我本意就像生成一个表如下:
a     b     count
a1   b1   5
a1   b2   7
...
a2   b1   13
...

程序非常简单:
proc freq data=test;
    table a*b / out=result nopercent noprint;
run;

结果sas告诉我table表太大没法处理。
请高手指点下,这种情况下怎么办?
我以为,sas既然是用硬盘储存和处理数据,那么只要硬盘空间够大,应该不成问题吧?
或者我要使用数据库?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-17 03:56:32
post your SAS log!
二维码

扫码加我 拉你入群

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

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

2011-6-17 07:33:35
帮顶一下!!
二维码

扫码加我 拉你入群

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

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

2011-6-17 08:32:07
proc sql;create table......
二维码

扫码加我 拉你入群

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

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

2011-6-17 10:27:49
try something like this:

data new;
  set original_data;
  format key $30.;
  key=a||"-"||b;
run;

proc freq data=new;
  table key/out=results nocum norow nocol;
run;
二维码

扫码加我 拉你入群

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

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

2011-6-17 10:51:02
bayes 发表于 2011-6-17 02:55
很简单的程序。我有一个800万观测值的数据集,其中有这样两个变量,姑且命名为a和b
每个观测值,a可以是a1,a2,a3等等,我大概看了一下,应该有100万+可能的a值。
对于b,也一样可能是b1,b2,b3等等,我无法知道有多少可能性,但是估计应该比a多。
我想计算一下以a*b分类的变量各有多少?

也就是说,如果n个观测值,都属于a1,也都属于b2,那么他们就是一类。计数是n
同属于a1,但是有的是b3,有的是b7,就不是一类。
我本意就像生成一个表如下:
a     b     count
a1   b1   5
a1   b2   7
...
a2   b1   13
...

程序非常简单:
proc freq data=test;
    table a*b / out=result nopercent noprint;
run;

结果sas告诉我table表太大没法处理。
请高手指点下,这种情况下怎么办?
我以为,sas既然是用硬盘储存和处理数据,那么只要硬盘空间够大,应该不成问题吧?
或者我要使用数据库?
It should not be a problem. See the log of simulated problem below.

29 options FULLSTIMER;
30
31 data t1;
32 do i=1 to 8e6;
33 a=ceil(ranuni(123)*1e3);
34 b=ceil(ranuni(123)*1e3);
35 output;
36 end;
37 drop i;
38 run;
NOTE: The data set WORK.T1 has 8000000 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 1.70 seconds
user cpu time 1.21 seconds
system cpu time 0.29 seconds
Memory 180k
OS Memory 7280k
Timestamp 6/16/2011 10:46:24 PM
 
39
40 proc freq data=t1 noprint;
41 table a*b/out=t2;
42 run;
NOTE: There were 8000000 observations read from the data set WORK.T1.
NOTE: The data set WORK.T2 has 999651 observations and 4 variables.
NOTE: PROCEDURE FREQ used (Total process time):
real time 13.07 seconds
user cpu time 12.71 seconds
system cpu time 0.31 seconds
Memory 34661k
OS Memory 44144k
Timestamp 6/16/2011 10:46:37 PM
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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