楼主: reduce_fat
735 14

[问答] 悬赏金币求解 array 问题 [推广有奖]

11
yongyitian 发表于 2015-3-18 09:47:10
reduce_fat 发表于 2015-3-17 11:28
试过,经少量修改后可以适用于4-5个变量的变换,帖子里的数据只给了3个变量。但是如果要和一个别的数据里 ...
1.
新的变量应该在原数据集中根据指定条件生成。这样可以保留zipcode与其他变量的关系,也

可以生成newgroup与其他变量的关系。

如果zipcode在两个数据集的排序和个数相同,可以将两个数据集merge成一个新的数据集.

2.
生成多个 label 宏变量应该不是问题。只须多copy, paste几次,并做简单修改即可。


问题是每个数组元素都是一个变量,且占用一定的内存。当变量太多的时候会超出系统所允

许的范围. 比如10000个zipcode,每个zipcode最多有10个citys,那么

temp_zip_city 数组就有10万个变量,其中绝大多数是空值。

将大数据分成若干小数据处理,最后合并结果,可以减少内存的占用.

另外,还可用zipcode和city两个变量存储结果。比如:
zipcode   city
10001        city1, city2, city3
10002   city4
10003   city5, city6
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
reduce_fat + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

12
reduce_fat 发表于 2015-3-18 12:54:58
yongyitian 发表于 2015-3-18 09:47
1.
新的变量应该在原数据集中根据指定条件生成。这样可以保留zipcode与其他变量的关系,也
对啊,我试验了加第5个变量,结果SAS 瘫痪了。这个memory 是共享的,我只能使用一小部分。几百万个组合。 所以我在Excel 里用lookup 和 if 之类的语句解决了。 还有 一个问题,过去有个SAS Advance 高手编了个array 但是他走后只留了结果,存在Excel 里,没有人能找到他是怎么作出来的。

基本就是new group 一个新变量,这个变量比较奇怪。 举个例子。

new group
1x
1y
1z
11
1xx
11x
这些可都属 summary group 1 。

但是也有这样的

new group

2099
2100
2190
2120  

这些都属于 summary group 40  。

规律是由另一个变量基本价定出来的。 虽然前边这些new group 不是按照一定顺序来的,但是总共有3000多个new group, 总结成有规律的 50 个 summary group。

比如说上边提到的 summary group 1 里的那些new group 都有共同的基本价, 叫base price。 我考虑可以用proc sort 先把这些基本价从大到小排起来。 不论这些new group 排序怎么乱,但是总共只有50组 base price 是独特的,只是每个base price 会在所有的3000多个new group 里出现多次。

这样我可以用proc sort 把它们找出来. 但问题是这个base price 有多个部分, part 1, part 2, part 3, part 4, part 5, part 6。 如果只sort 第一个从大到小是找不出独特的base price 的。 因为不是所有part 都是从小到大排列出的。

比如其中一个独特的base price 是part 1 (max) + part 2 (min) + part 3 (median) + part 4 (max) + part 5 (second largest) + part 6 (third smallest). 根据找出来的独特base price 来定义summary group。 这样会让我前边整理出的数据更容易使用。

请问这个用SAS array 可以轻松实现吗?

13
yongyitian 发表于 2015-3-19 10:46:04
reduce_fat 发表于 2015-3-18 12:54
对啊,我试验了加第5个变量,结果SAS 瘫痪了。这个memory 是共享的,我只能使用一小部分。几百万个组合 ...
感觉你说的问题与多维数组(或模型)有关,比如在(x,y,z)三维空间中x轴代表baseprice,x的坐标有part1, part2, part3,.. 等;  y轴是zipcode; z轴是city. summary的结果是跟据xyz的值确定的.

问题的关键是如何建立多维数组及如何将数据放入数组中,最后是怎样从多维数组中取出需要的数据生成新的数据集。

在数据步中,所有数据应该放在一个数据集里,或者可以合并成一个数据集.
这个数据集有点像excel的一个worksheet, 有多个分类变量(列)和一个或多个summary变量.

14
reduce_fat 发表于 2015-3-20 13:21:37
yongyitian 发表于 2015-3-19 10:46
感觉你说的问题与多维数组(或模型)有关,比如在(x,y,z)三维空间中x轴代表baseprice,x的坐标有part ...
对的,在 excel里 筛选耗费时间,如果能用 sas把这个过程自动化就 好了 。 周末再谈详情。

15
reduce_fat 发表于 2015-3-20 13:21:43
yongyitian 发表于 2015-3-19 10:46
感觉你说的问题与多维数组(或模型)有关,比如在(x,y,z)三维空间中x轴代表baseprice,x的坐标有part ...
对的,在 excel里 筛选耗费时间,如果能用 sas把这个过程自动化就 好了 。 周末再谈详情。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 09:25