由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 急请教一个sas 问题
相关主题
A SAS problem如何对这个数据做统计模型?
请教SAS的问题,时间变量读取,包子答谢mixed model DF 问题
Ask a SAS question请教Reapeated measure mixed model
syntax errors问个统计问题
在SAS里面如何进行数组操作?do loop 的一道题
sas一问in =option的一道题
新人报道,兼问SAS data set的问题请教一道SAS Base的问题
SAS code help!! thanksSAS 问题求助,有包子
相关话题的讨论汇总
话题: time1话题: 30话题: sas话题: 40话题: 赚钱
进入Statistics版参与讨论
1 (共1页)
m*****r
发帖数: 51
1
我有observations with different starting points. 比如, 第一个人1月开始赚钱
, 第二个人2月开始赚钱, 第三个人4月开始赚钱。 现在我需要把所有的人在第一个
月赚的钱放到一个variable (time1)下, 第二个月(2月,3月,5月)的放到同一个
variable (time2)下, 依次类推, 对每个人都要看开始赚钱后接下来的24个月。 有没
有什么办法create time1-time24. 如果24个时间点一个个的来, 太慢了。
例子来了:
原data
ID Jan Feb March April May Jun ....Dec
1 20 30 40 50 0 50
2 10 15 20 25 30
3 30 30 40
我需要的是
ID time1 time2 time3 time4 ...tiimeN
1 20 30 40 50
2 10 15 20 25
3 30 30 40
不常用SAS, 简单点的方法比较好, 免得搞不懂:). 多谢!
m***c
发帖数: 118
2
没完全看懂问题,你给个data sample可能会有助于别人理解你的问题。
m*****r
发帖数: 51
3
加了:), 谢谢.

【在 m***c 的大作中提到】
: 没完全看懂问题,你给个data sample可能会有助于别人理解你的问题。
s*********h
发帖数: 6288
4
SAS就是处理这种东西的时候特别麻烦。
你的原始数据的列数应该有最大值吧?比如说是N
那建一个array ORG {N} 把原来的那些列都扔进去。
然后建一个 array NEW {24} time1-time24
设一个indicator A来标记是不是开始算钱了
A=0;
k=1;
do i=1 to 24;
if A = 0 and org[i] ^=. then do;
new[1]=org[i];
A = 1;
k + 1;
end;
else if A = 1 and k <= 24 then do;
new[k] = org[i];
k + 1;
end;
end;
然后keep 这个array new好了。
大致上思路差不多。前提是如果开始赚钱了后面有一个月没赚钱也得算进去

m*****r
发帖数: 51
5
这个很好用! 非常感谢!

【在 s*********h 的大作中提到】
: SAS就是处理这种东西的时候特别麻烦。
: 你的原始数据的列数应该有最大值吧?比如说是N
: 那建一个array ORG {N} 把原来的那些列都扔进去。
: 然后建一个 array NEW {24} time1-time24
: 设一个indicator A来标记是不是开始算钱了
: A=0;
: k=1;
: do i=1 to 24;
: if A = 0 and org[i] ^=. then do;
: new[1]=org[i];

s*********h
发帖数: 6288
6
回复了才发现有个typo, do i=1 to N

【在 m*****r 的大作中提到】
: 这个很好用! 非常感谢!
m***c
发帖数: 118
7
data a;
input ID $ jan feb mar apr may jun jul aug sep oct;
cards;
1 20 30 50 0 50 40 20 70 55 25
2 . . 30 50 0 90 40 0 40 20
3 . . . 60 20 0 50 10 0 40
;
data b(keep=ID time1-time10); set a;
length tot $ 100;
array am(10) jan--oct;
do i=1 to dim(am);
if am(i)<=0 then am(i)=.;
tot=compress(catx('',tot,am(i)),,'p');
end;
array at(10) time1-time10;
do j=1 to 10;
at(j)=scan(tot,j);
end;
run;
1 (共1页)
进入Statistics版参与讨论
相关主题
SAS 问题求助,有包子在SAS里面如何进行数组操作?
Import excel file to sas (the first 8 or more observationssas一问
求问一道SAS adv 题新人报道,兼问SAS data set的问题
一个sas base问题不明白,请教SAS code help!! thanks
A SAS problem如何对这个数据做统计模型?
请教SAS的问题,时间变量读取,包子答谢mixed model DF 问题
Ask a SAS question请教Reapeated measure mixed model
syntax errors问个统计问题
相关话题的讨论汇总
话题: time1话题: 30话题: sas话题: 40话题: 赚钱