楼主: hamsik11
5016 26

[有偿编程] 悬赏求代码 [推广有奖]

21
jingju11 发表于 2013-8-8 11:28:08
what about the solution on 16th floor? Transpose procedure might work (but not sure). In practice, 100K*100K table is useless in any way. unable to calcuate, unable to print, unable to query...
But any way, I think the matrix is additive by row of same names(?), plus to mirror the elements by diagonal from  right to left corner...
JingJu

22
hamsik11 发表于 2013-8-8 11:35:20
jingju11 发表于 2013-8-8 11:28
what about the solution on 16th floor? Transpose procedure might work (but not sure). In practice, 1 ...
yongyitian高手用了select distinct name1 into : NameList,按照我的数据量的话 这个肯定也超出sas允许的字符串长度了......

23
jingju11 发表于 2013-8-8 11:38:46
很显然名称的问题不是关键.一个字符串放不下,多用几个好了.但是内存的问题是难点.京剧

24
ziyenano 发表于 2013-8-8 11:46:21
hamsik11 发表于 2013-8-8 10:42
比较悲剧的是 我处理一些大一点的数据,譬如10万个用户是,在res=j(nrow(name),nrow(name),0);这一步出现 ...
好吧,10W*10W,每个单元算一个字节,10^10/1024/1024/1024=9.31G;
这种稀疏矩阵耗内存;
楼主是需要通过矩阵形式实现什么算法么?
我不大清楚SAS运行的机制,如果运算都是放在内存中进行,估计是爱莫能助了,
即使换了服务器,你的数据量再上一个等级,服务器也撑不住。
新建一个库,libname test "E:\";保证库的空间足够大。
proc iml;
reset deflib=test;
默认数据放在test库中;
或者用楼上几位的data步,数据也存储在test库中。
试试看吧。

25
jingju11 发表于 2013-8-8 21:05:30
说的不错.通过实验发现,当维度在10K*10K时, 数据尺寸1.2G. 也就是说, 如此推算, 100K的方阵大概需要100G以上(当然这不是内存).而且时间的消耗也相当令人心烦(通过逐步叠加的方法,10K*10K的表格需要15分钟).
京剧

26
playmore 发表于 2013-8-9 08:22:09
hamsik11 发表于 2013-8-8 11:35
yongyitian高手用了select distinct name1 into : NameList,按照我的数据量的话 这个肯定也超出sas允许的 ...
看了下你的问题
如果你的数据量大,矩阵全存起来肯定不是好办法
SAS有解稀疏矩阵的办法,尤其适用于对称矩阵
是用索引的办法存储矩阵,在资源占用和速度肯定有优化

所以归根结底,
如果你不需要做复杂的矩阵运算
你之前的表就够用了
不用再想着变成矩阵形了

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

27
hamsik11 发表于 2013-8-9 09:58:47
谢谢各位了 学习了不少 感谢中....

另外,我怎么给各位发论坛币,哥们儿准备给大家发点小小的酬劳............

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 09:43