楼主: luoyan334
3994 7

[求助]SAS中怎么表示三维数组 [推广有奖]

  • 0关注
  • 0粉丝

已卖:25份资源

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
16 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
296 点
帖子
53
精华
0
在线时间
8 小时
注册时间
2008-10-24
最后登录
2009-12-6

楼主
luoyan334 发表于 2009-4-22 23:10:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

各位大虾,

我要用SAS编程,怎么表示三维数组呢?

想了很久都没有头绪,希望大家帮帮忙啊。。。

二维码

扫码加我 拉你入群

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

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

关键词:希望大家帮帮忙 SAS编程 SAS 三维

回帖推荐

林嘉祥 发表于7楼  查看完整内容

let's assume ownerage, model, and carage are characters in a data set called 'xxx'.build 3 informats first,proc format;invalue ownerage'17-20'=1'21-24'=2...;invalue model'A'=1'B'=2'C'=3'D'=4;invalue carage'0-3'=1...;Then the records can be loaded into arrays as follows:data _null_;array x[8,4,4] _temporary_;array y[8,4,4] _temporary_;do until (eof);set xxx end = eof;x = nclaims; y = avcost;end;/* ...

本帖被以下文库推荐

沙发
林嘉祥 发表于 2009-4-23 08:48:00
以2x3x4的数组为例:
下标从1开始用
array x[2, 3, 4] _temporary_;

不从1开始比如
array x[-1:0, 100:102, 0:3] _temporary_;


平生无大志,唯吃饱ZB,喂饱JB耳!

藤椅
luoyan334 发表于 2009-4-23 21:21:00

谢谢你!不过我还不是太明白呢。

我现在有的数据是这样子的:

ownerage    model    carage     nclaims    avcost

17-20          A          0-3            8                289

17-20          A          4-7            8                 282

。。。

21-24          B          8-9           13                  196

。。。

ownerage有八个水平,17-20、21-24、25-29、30-34、35-39、40-49、50-59和60+;model四个水平:A、B、C、D;carage四个水平:0-3、4-7、8-9和10+。

总共128组数据,我要用三维数组表示nclaims和avcost,你能再给跟我讲讲具体该怎么编程表示它们吗? (特别是定义了数组之后怎么赋值) 

谢谢了啊

 

板凳
林嘉祥 发表于 2009-4-24 02:54:00

费那个力气干啥?通常在DATA STEP里您用BY-GROUP processing就可以了。硬要转成数组的话,还得把每个水平都映射成自然数下标。

平生无大志,唯吃饱ZB,喂饱JB耳!

报纸
luoyan334 发表于 2009-4-24 10:25:00

主要是我后面要用那个三维的数据做迭代,计算呢

用by-groop的话后面也不太好处理吧

[此贴子已经被作者于2009-4-24 10:27:46编辑过]

地板
luoyan334 发表于 2009-4-25 13:28:00
自己顶一下,没有其他人知道吗?

7
林嘉祥 发表于 2009-4-27 08:53:00
let's assume ownerage, model, and carage are characters in a data set called 'xxx'.
build 3 informats first,
proc format;
invalue ownerage
'17-20'=1
'21-24'=2
...
;
invalue model
'A'=1
'B'=2
'C'=3
'D'=4
;
invalue carage
'0-3'=1
...
;

Then the records can be loaded into arrays as follows:

data _null_;
array x[8,4,4] _temporary_;
array y[8,4,4] _temporary_;
do until (eof);
set xxx end = eof;
x[input(ownerage, ownerage.), input(model, model.), input(carage, carage.)] = nclaims;
y[input(ownerage, ownerage.), input(model, model.), input(carage, carage.)] = avcost;
end;
/*
arrays x and y are loaded here
*/
stop;
run;

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

平生无大志,唯吃饱ZB,喂饱JB耳!

8
luoyan334 发表于 2009-4-28 22:15:00
恩,这个很好的。谢谢大哥了

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

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