SAS中文论坛

标题: 又卡壳了。又遇到一个问题,请指点,多谢了 [打印本页]

作者: shiyiming    时间: 2008-11-26 19:31
标题: 又卡壳了。又遇到一个问题,请指点,多谢了
又卡壳了。又遇到一个问题,想了很久,还是不懂如何解决   <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( --> 。 问题如下:

数据是这样的,有三个变量:House_ID (比如有3个家庭,1,2 和3),Date(比如总共样本期内有5天),Purchase (每天的花销金额)。

House_ID   Date    Purchase
1          1         71
1          2         59
1          3         53
1          4         49
1          5         51
2          1         13
2          3         20
2          5         19
3          2         36
3          3         41
3          4         39
3          5         34

我们注意到,House 1在每一天中都有观测值。而House 2却在Date 2中没有观测值;House 3在Date 1中没有观测值。请教,如何能够把我的数据转化成如下的形式:

House   Date    Var
1          1         71
1          2         59
1          3         53
1          4         49
1          5         51
2          1         13
2          2          .
2          3         20
2          4          .
2          5         19
3          1          .
3          2         36
3          3         41
3          4         39
3          5         34

即,就算某一天中没有观测值。我们也能够“插入一行”,这一行有日期以及用点&quot;.&quot;表示没有观测值。请各位多多帮忙,提供解法或者思路,我先说声谢谢了。  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
作者: shiyiming    时间: 2008-11-26 19:46
标题: Re: 又卡壳了。又遇到一个问题,请指点,多谢了
方法实在太多了,老掉牙的题目了。
方法一:data步
方法二:proc means。
方法三:proc expand
data步代码量多一点。
proc 的代码量少一点:
作者: shiyiming    时间: 2008-11-26 20:17
标题: Re: 又卡壳了。又遇到一个问题,请指点,多谢了
To byes:多谢你的指点。
惭愧,试了一下,还是不懂。我会多找些例子看看,接着试。
对于proc expand或者proc means的方法,能否分别指点地具体一点?先说声谢谢了。  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
作者: shiyiming    时间: 2008-11-26 20:58
标题: Re: 又卡壳了。又遇到一个问题,请指点,多谢了
懂了懂了,多谢byes兄!!!   <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2008-11-27 08:59
标题: Re: 又卡壳了。又遇到一个问题,请指点,多谢了
凑个热闹,加强一下记忆!~用proc freq作的!~
data raw;
input House_ID $ Date Purchase;
cards;
1 1 71
1 2 59
1 3 53
1 4 49
1 5 51
2 1 13
2 3 20
2 5 19
3 2 36
3 3 41
3 4 39
3 5 34
;
run;
proc freq data=raw noprint;
table House_ID*Date/sparse out=result(drop=percent rename=(count=purchase));
weight purchase;
run;
作者: shiyiming    时间: 2008-11-29 19:31
标题: Re: 又卡壳了。又遇到一个问题,请指点,多谢了
to 缘来是你

多谢热心肠!   <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2