由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 请教请问如何删除这样的丢失数据。
相关主题
麻烦问一下,如何处理很多变量的数据。重新安排变量的问题
一个SAS的时间区域求值问题SAS question: count non-missing value for different variables
请帮看一下这个简单的code为什么不work?[合集] How to specify a variable as missing
关于stepwise programming请教flag问题
请问sas中一个变量的内容被两个左斜杠(/)分成了三部分又来请教了:sas里面咋实现lag?
[合集] └ Re: 关于stepwise programming请教proc sql处理missing value的问题
在SAS里如何用array或者macro改进这段程序?求指教!还有个问题,如何将一条记录变为空值。
请教一个简单SAS问题问个sas编程的题
相关话题的讨论汇总
话题: missing话题: 2010话题: var2话题: var1话题: idx
进入Statistics版参与讨论
1 (共1页)
b2
发帖数: 427
1
var1 var2 date
1 missing 2010-1-1
1 missing 2010-1-2
1 a 2010-1-3
1 b 2010-1-4
2 missing 2010-2-1
2 missing 2010-3-26
2 e 2010-4-1
2 missing 2010-5-1
2 f 2010-6-10
3 eee 2007-1-1
3 missing 2008-3-1
3 missing 2009-1-20
3 f 2009-2-1
3 missing 2010-1-1
变成
var1 var2
1 a 2010-1-3
1 b 2010-1-4
2 e
s******r
发帖数: 1524
2
data test;
set test;
idx=_n_;run;
proc sql;
create table test2 as
select a.* from test a inner join
(select var1, min(idx) as min_idx, max(idx) as max_idx
from test where var2 >''
group by var1) b
on a.var1=b.var1 and a.idx between min_idx and max_idx;quit;run;

【在 b2 的大作中提到】
: var1 var2 date
: 1 missing 2010-1-1
: 1 missing 2010-1-2
: 1 a 2010-1-3
: 1 b 2010-1-4
: 2 missing 2010-2-1
: 2 missing 2010-3-26
: 2 e 2010-4-1
: 2 missing 2010-5-1
: 2 f 2010-6-10

b2
发帖数: 427
3
谢谢大侠,囊中羞涩,发了一个包子给您。
如果有200多个变量like var2,我应该怎么做呢?
我想的是
array var(221) 变量名1 ... 变量221;
然后用宏。
%macro count(i);
above statments ;
%mend;
然后再用merge合并,可行么?可以把从array开始的语句放在同一个数据不里面么?
我想问的是如何在macro里面调用数组名字呢,like var&i.?
thank you so much.
o****o
发帖数: 8077
4
don't know how your VAR2's look like. If they are $1. Char variables or Num variables, then
you can do some trick like this:
data new;
set old; by var1;
retain _flg;
array v2{*} $ var2-var200;
*array v2{*} var2-var200;
_j=length(compress(cat(of v2[*]), ' .'));
if first.var1 then _flg=(_j=dim(_v2));
else _flg=_flg+(_j=dim(_v2));
if _flg=0 then delete;
drop _:;
run;

if they are of more general case, you probablly have to go ove
s******r
发帖数: 1524
5
not sure what you want to do; check for each variable or check all variables
at the same time. I seldom use array, if you want to use array, you got to
use data step.
%macro Test;
data test;
set test;
idx=_n_;run;
proc sql;
create table test2 as
select a.* from test a inner join
(select var1, min(idx) as min_idx, max(idx) as max_idx
from test where
var2 >''
%do i = 2 %to 200;
and/or var&i >''
%end;
group by var1) b
on a.var1=b.var1 and a.idx between min_idx and max_idx;quit;run;
%do i = 1 %to

【在 b2 的大作中提到】
: 谢谢大侠,囊中羞涩,发了一个包子给您。
: 如果有200多个变量like var2,我应该怎么做呢?
: 我想的是
: array var(221) 变量名1 ... 变量221;
: 然后用宏。
: %macro count(i);
: above statments ;
: %mend;
: 然后再用merge合并,可行么?可以把从array开始的语句放在同一个数据不里面么?
: 我想问的是如何在macro里面调用数组名字呢,like var&i.?

b2
发帖数: 427
6
我的数据是这样的
state date 221个待分析的变量
...
所有的221个变量全是数值型的。
我是想在一个程序里面对221个变量分析得出在每个州内每个变量开始记录的起始,结
束时间以及中间缺失的次数,好分析其缺失可能带来的影响。每个变量是单独分析的,这样每个变量有
三个结果,startdate,enddate and #of missing.
因为这221个变量名称都很不同,所以我想是否可以用数组替代这些变量的名字,然后用宏依次对这221
变量分析。然后在merge by state,startdate,enddate and #of missing
S******y
发帖数: 1123
7
# A Python solution --
from collections import deque
#function to clean up leading 'missing' items
def clean_queue(q):
if q[0][0] != 'missing' and q[-1][0] != 'missing':
return q
else:
if q[0][0] == 'missing':
q.popleft()
if q[-1][0] == 'missing':
q.pop()
return clean_queue(q)
in_file = 'C:\\b2_data.txt'
f = open(in_file, 'r')
f.next() #skip column-name header
tmp_var1 = ''
ls = []
for line in f:
var1, var2, date = line.spli
1 (共1页)
进入Statistics版参与讨论
相关主题
问个sas编程的题请问sas中一个变量的内容被两个左斜杠(/)分成了三部分
ask for help (urgent): A SAS question[合集] └ Re: 关于stepwise programming
sas code求助,有关date macro在SAS里如何用array或者macro改进这段程序?求指教!
工作中的SAS 编程请教请教一个简单SAS问题
麻烦问一下,如何处理很多变量的数据。重新安排变量的问题
一个SAS的时间区域求值问题SAS question: count non-missing value for different variables
请帮看一下这个简单的code为什么不work?[合集] How to specify a variable as missing
关于stepwise programming请教flag问题
相关话题的讨论汇总
话题: missing话题: 2010话题: var2话题: var1话题: idx