楼主: bayes
3933 13

[原创博文] Table表过大,怎么处理? [推广有奖]

  • 1关注
  • 0粉丝

博士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
1172 点
帖子
78
精华
0
在线时间
419 小时
注册时间
2005-11-5
最后登录
2021-11-14

楼主
bayes 发表于 2011-6-17 02:55:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
很简单的程序。我有一个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既然是用硬盘储存和处理数据,那么只要硬盘空间够大,应该不成问题吧?
或者我要使用数据库?
二维码

扫码加我 拉你入群

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

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

关键词:table表 Table ABLE 怎么处理 ABL 大数据

回帖推荐

bayes 发表于7楼  查看完整内容

6# bobguy 问题的关键,可能不在于800万的观测值,而在于a和b的种类太多。 我看了你的程序,以下两句: a=ceil(ranuni(123)*1e3); b=ceil(ranuni(123)*1e3); 实际上,给予a和b的种类只有各1000,而我的实际数据是各100万+,所以才会出现你可以模拟,而我这个却太大不能处理的情况。 不知道把上面两句改成以下两句: a=ceil(ranuni(123)*1e6); b=ceil(ranuni(123)*1e6); 之后,看看还能模拟不。

本帖被以下文库推荐

沙发
Isscaliu 发表于 2011-6-17 03:56:32
post your SAS log!
It was the best of times, it was the worst of times.

藤椅
wingate99 发表于 2011-6-17 07:33:35
帮顶一下!!

板凳
soporaeternus 发表于 2011-6-17 08:32:07
proc sql;create table......
Let them be hard, but never unjust

报纸
Bridgenc 发表于 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;

地板
bobguy 发表于 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

7
bayes 发表于 2011-6-17 11:42:26
6# bobguy
问题的关键,可能不在于800万的观测值,而在于a和b的种类太多。
我看了你的程序,以下两句:
a=ceil(ranuni(123)*1e3);
b=ceil(ranuni(123)*1e3);
实际上,给予a和b的种类只有各1000,而我的实际数据是各100万+,所以才会出现你可以模拟,而我这个却太大不能处理的情况。
不知道把上面两句改成以下两句:
a=ceil(ranuni(123)*1e6);
b=ceil(ranuni(123)*1e6);
之后,看看还能模拟不。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

8
soporaeternus 发表于 2011-6-17 11:57:47
楼上
sql统计行的吧......
Let them be hard, but never unjust

9
bayes 发表于 2011-6-17 13:54:58
8# soporaeternus 我还没试,不过按道理,用数据库肯定是可以的。
不过我手上的活,明天赶着交,实在是没时间去学习sql的一些东西了。
有时间还是的学习下。

10
bayes 发表于 2011-6-17 13:59:21
5# Bridgenc 这个地方的key=a||"-"||b是拼接字符串。
然后用a-b这个新的字符串作为唯一的分类符。
这个想法太巧妙了。
这样的话,这个新变量的种类,无论如何不会超过观测值,就避免了a×b太大的问题。
非常感谢。

我又想了一下,可能这种解决方案和适合我这种需求,对于概率没有任何计算要求,单纯只是数一下个数。
如果要求行和列的概率和,或者需要各行或各列的累积概率,还得用table表,那样可能只能动用数据库了。


测试的结果,还是不成功,这次报错是memory不足了。可能因为我的a和b都是字符串,而且其中一个的长度还比较长的原因吧。
我看了一下option,memsize大约是4g,已经设为最大了。
但是我自己的机器,是4g的内存,外加虚拟内存,应该可以设得比这个大啊,不知道为啥。
我看别人的,貌似可以把memsize设的比内存大很多,需要时甚至可以设定为5倍内存,当然硬盘得足够大,就是不知道他们怎么做到的。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 15:56