R******d 发帖数: 1436 | 1 有一个sas数据集,有13000行,13000列(实际上就是个square距离矩阵)。我想输出
到一个tab文件。用了proc export,发现行被截断了。读了下输出的code,里面有一个
参数:lrecl=32767。请问如何把这个参数增加到lrecl=32767000(不知道具体多大,
反正挺大的)。直接这么写会报错。
然后我又想了另外一个办法,把这个矩阵转置一下,那么就变成13000*13000列,行就
只有3个数了。想转置好了再输出,应该就没有lrecl的问题了。好比这样:
proc transpose data=distance_matrix out=pair_distance;
var _all_;
by id;
run;
结果巨慢无比,不知道什么时候才能转完全。
大牛支个招吧,多谢了。 |
s*r 发帖数: 2757 | |
R******d 发帖数: 1436 | |
s*r 发帖数: 2757 | |
s*r 发帖数: 2757 | 5 q1: 为什么要输出
q2: 是不是对称阵
q3: 0 多不多
我印象当中,这样的矩阵应该存成3列,row index, col index, and corr |
R******d 发帖数: 1436 | 6 q1: 我需要用到矩阵里的值,做下一步计算
q2:是对称的,我用这个来产生的矩阵
proc distance data=data out=distance_matrix SHAPE=square;
q3:好像没什么0。0多和0少有什么关系么
俺就是想存成3列,但是proc distance不能输出成这样,我之前在版上问了这个问题,
没人回:( |
s*r 发帖数: 2757 | 7 下一步的计算是你自己写的程序 还是别人写好的程序
把那个triangle matrix存成三列可能还是比较容易实现的思路
也许不用array, 用proc transpose + by都可以实现 |
D******n 发帖数: 2836 | 8 写个code变成一列呗。
【在 R******d 的大作中提到】 : 有一个sas数据集,有13000行,13000列(实际上就是个square距离矩阵)。我想输出 : 到一个tab文件。用了proc export,发现行被截断了。读了下输出的code,里面有一个 : 参数:lrecl=32767。请问如何把这个参数增加到lrecl=32767000(不知道具体多大, : 反正挺大的)。直接这么写会报错。 : 然后我又想了另外一个办法,把这个矩阵转置一下,那么就变成13000*13000列,行就 : 只有3个数了。想转置好了再输出,应该就没有lrecl的问题了。好比这样: : proc transpose data=distance_matrix out=pair_distance; : var _all_; : by id; : run;
|
R******d 发帖数: 1436 | 9 俺就是不知道怎么写啊,给点提示吧。俺试了transpose,太废时间了。
矩阵的结果输出了给另外一个bash的程序做输入。
【在 D******n 的大作中提到】 : 写个code变成一列呗。
|
s*r 发帖数: 2757 | 10 http://www.ats.ucla.edu/stat/sas/library/nesug98/p156.pdf
from page 4
Transposing Back Again
Occasionally a program must transpose data in
the other direction, creating multiple
observations from each existing observation.
Here is the "before" picture:
NAME DATE1 DATE2 DATE3
Amy Date #A1 Date #A2 .
Bob Date #B1 . Date #B3
The "after" picture should look like this:
NAME DATE
Amy Date #A1
Amy Date #A2
Bob Date #B1
Bob .
Bob Date #B3
【在 R******d 的大作中提到】 : 俺就是不知道怎么写啊,给点提示吧。俺试了transpose,太废时间了。 : 矩阵的结果输出了给另外一个bash的程序做输入。
|
R******d 发帖数: 1436 | 11 transpose俺会啊,上面不给了code了么
就是这个有点慢,想知道有没有别的好的方法输出想要的格式 |