S********a 发帖数: 359 | 1 SAS CODE:
proc logistic data=test2 desc;
class c_pnc (ref='1') marital (ref='1') edu (ref='1') race_eth(ref='1') c_smoke (ref='0') c_drink (ref='0') drug (ref='0') npar_grp (ref='0') c_
magecont (ref='1');
model combpreecl=c_magecont c_pnc marital edu race_eth c_smoke pmavg c_drink drug npar_grp / risklimits;
run;
R CODE:
adj.glm=glm(combpreecl~age2+age3+age4+age5+pnc2+pnc3+marital2+marital3+edu2+edu3+race2+race3+c_smoke+pmavg+c_drink+DRUG+npar_grp, data=mydata2, family=binomial("logit"))
R 里除了p... 阅读全帖 |
|
H**********v 发帖数: 169 | 2 用SQL可以全部搞定:
proc sql;
create table test1 as select *, count(clinic_number) as count
from test
group by clinic_number;
create table test2 as select *
from test1
where count>3; |
|
d********h 发帖数: 2048 | 3 proc transpose data=test out=test1;
var feature;
by id;
data test2;
length c $ 1000;
set test1 ;
array tmp col1-col3;
do over tmp;
c=catx("_",of c tmp);
end;
proc print; |
|
s******r 发帖数: 1524 | 4 data test;
do a = 1 to 10;
output;
end;
run;
data test2;set test end = eof;
c=a;
a=lag(c);
b=c;
if _n_=1 then delete;
output;
if eof then do;a=c;b=.;output;end;
drop c;
run; |
|
d*******1 发帖数: 854 | 5 比如
FOR (I=1: 20), 每一个循环都要产生一个DATAFRAME 如 TEST1, TEST2, TEST3......,
也就是说把循环数作为DATAFRAME名字的后缀, 怎么弄呢? 谢了 |
|
A*******s 发帖数: 3942 | 6 data test;
input A B formula $;
cards;
23 12 A*B
75 2 A-B
6 7843 A/B
74 5 A**B
;
run;
data _null_;
set test end=eof;
if _N_=1 then call execute("data test2;");
call execute("i="||_N_||"; set test point=i; result="||formula||";
output;");
if eof then call execute("stop; drop i; run;");
run;
|
|
s******r 发帖数: 1524 | 7 data test;
input Student $1. Score;
datalines;
A 90
A 91
B 88
B 85
B 93
C 88
C 95
;
run;
data test2;set test;by student;
if first.student then Raised=' ';
else if score>lag(score) then raised='Y';
else raised ='N';
run;
baozi pls. |
|
G********r 发帖数: 3161 | 8 两个Datasets啊,原数据就是SET语句里的那个,这个Dataset已经有一个Jobcode的变
量,长度是5。你用它来产生新的Dataset,然后改长度成12,但是这个步骤是不能改变
长度的。你自己试试这个Code不就完了。呵呵。
data test;
input jobcode $ 1-5;
datalines;
ABCDE
;
run;
data test2;
set test;
length jobcode $ 12;
run; |
|
G*********e 发帖数: 182 | 9 将中间那个data step 改成
data test2;
length jobcode $ 5;
set test;
run; |
|
s******r 发帖数: 1524 | 10 data test;
input x $5.;
datalines;
ABC
BBC
DDD
DAD
;
run;
data test2;set test;
y=cats('27'x,x,'27'x);
z=quote(x);
run;
baozi, pls |
|
t*******t 发帖数: 633 | 11 这个可以啵?
data test;
input var1 $ var2 $ var3 $ var4 $ var5;
cards;
x 8 2 1 4
3 4 5 21 2
0 z 88 45 2
;
run;
data test2;
set test;
array var{4} var1-var4;
do i=1 to 4;
if var{i} in ('x','y','z') then target=1;
end;
if missing(target) then target=0;
run; |
|
g****8 发帖数: 2828 | 12 楼上的方法好,不过,可以不用两步,用个merge的小trick就行
%let NM=is not missing;
data test2;
merge test(keep=id v1 v2 where=(v1 &NM))
test(keep=v3 where=(v3 &NM))
test(keep=v4 where=(v4 &NM));
;
run; |
|
s******r 发帖数: 1524 | 13 proc sql;
create table test2 as
select id, max(v1) as v1, max(v2) as v2, max(v3) as v3, max(v4) as v4
from test
group by id;quit;run;
It works for your sample. Not sure meet your requirement. |
|
s******r 发帖数: 1524 | 14 大包子 pls.
%macro test;
proc sql;
create table var_ls as select distinct name from dictionary.columns
where libname='WORK' and memname='TEST' and upcase(name) ne 'ID';quit;run;
data _null_;set var_ls;
call symput(cats('var',_n_),name);
call symput('cnt',_n_);
run;
proc sql;
create table test2 as
select id
%do i = 1 %to &cnt;
,max(&&var&i) as &&var&i
%end;
from test
group by id;quit;run;
%mend;
%test;
but |
|
x********i 发帖数: 1 | 15 根本不用merge的,下面程序就可以满足你要求了:
data test;
input id cc;
cards;
1 1
1 1
2 2
2 2
2 2
;
run;
***********my code;
proc sql;
create table test2 as
select *, count(id) as sumcc
from test
group by id;
run; |
|
k*******a 发帖数: 772 | 16 data test;
input id seq var;
datalines;
1 1 11
1 4 22
1 5 33
1 6 44
1 7 55
1 8 66
2 1 11
2 2 22
2 8 33
3 1 11
3 2 22
3 3 33
3 4 44
3 5 55
3 6 66
3 7 77
3 8 88
;
run;
data test2;
set test(rename=(var=var1));
by id;
var = lag(var1);
if first.id then var=.;
drop var1;
run; |
|
l******n 发帖数: 9344 | 17 data test(drop=rate);
set test;
Num_rate=rate*1;
run;
proc sort data=test;
by site descending num_rate descending yeild ;
run;
data test2;
set test ;
retain max;
if first.yeild then max =.;
max = max(max,yeild);
rel_yeild=yeild/max;
run;
yield |
|
l******m 发帖数: 111 | 18 data test;
input id $ a $ b $ c $ d $;
cards;
1 y y n y
1 n . . .
1 . n . .
2 y n y n
2 y n y n
3 n y y y
3 . . n y
4 y y n n
4 y y . n
4 n y . .
4 y . y y
;
proc sql;
create table test2 as
select id,
max(a) as A1,
max(b) as b1,
max(c) as c1,
max(d) as d1
from test
group by id
;
quit; |
|
g******g 发帖数: 498 | 19 SAS初学者,想用SAS处理数据,但是对SAS了解的不是很多。麻烦高人指点。
Data test;
input A B C D;
datalines;
3.04 0.14 2.04 0.53
2.89 0.12 1.91 0.51
3.01 0.12 1.8 0.48
;
Proc print data=test; run;
data test2; set test;
A_B=A/B; A_C=A/C; A_D=A/D; B_C=B/C; B_D=B/D; C_D=C/D;
PROC PRINT; RUN;
问题
如果A_B>21, 我想得到这样的结果: A_B2=((A_B/2.5)-1)*1000/50;
如果A_B<=21,我想得到这样的结果: A_B2=(1-(2.5/A_B))*1000/50;
同理,其他的变量(比如 A_C, A_D等等)也想得到类似的关系。不知道是不是要用到
if 语句,我试着用,但是不work,估计是我哪里出问题了。
可能问题比较幼稚,先谢谢了。 |
|
r******o 发帖数: 81 | 20 其实我就是想在一个data step中创建一个macro variable: testvar,但是还需要紧接
着就可以用这个macro variable来创建一个新变量:a2。
我知道call symput创建的macro var必须先把当前data step关闭才可以调用,请问还
有别的办法可以完成我的这个编程想法吗?
谢谢大家了!!
data test1;
input a b c;
cards;
1 1 1
;
run;
data test2;
set test1;
do i = 1 to 2;
a1 = i;
call symput('testvar',a1);
%put &testvar.;
a2 = &testvar.; *ALL I want is to get a2 = 1 for the first record and 2 for
the second record in a dynamic way;
output;
end;
run |
|
z**o 发帖数: 149 | 21 因为test1里面没有k,processing vector处理完一行只是reset xyz,k不变,test2里
面有k,每读一行都要reset |
|
x******7 发帖数: 122 | 22 几个小时前考了BASE, 内容几乎可以认为全部来自题库50+70+123,62题中大概20题
可以认为是变体
错了3题,大概知道错了下面两题/三题 顺便回忆了其它的一些题
1.
data temp;
infile xxx;
date="01feb1980"d
how to generate ship_note in the form “Feb 01, 1980”
A.ship_note=put(date,date9.)
B.ship_note=put(date,date9.,worddate20.)
C.ship_note=put(date,worddate20.)
D.ship_note=input(.....)
我选了错误答案B,
2.
x y
5 1
4 6
5 4
data one two other;
if x ge 5 then output one;
else if y le 5 then output two;
else output other;
How many obs in dataset one, two and other?
毫不犹豫选... 阅读全帖 |
|
|
a***a 发帖数: 12425 | 24 谢谢大家的提示。各位都说是欠曝,看来是欠曝了。有两个一直困惑我的问题加一个软
件问题。
(1)Matering(测光)
我用Matrix矩阵测光,是不是就是ellieo说得全局测光啊?
我在测光这个问题上一向糊里糊涂,所以就一直用这个设置。我相机上有三种设置,虽
然看了看说明,我还是不会用。你们在什么情况下用什么测光呢?
Matrix(矩阵测光)
Center-weighted(中央重点测光)
Spot(点测光)(对焦有啥区别)
(2)AF Area mode(AF区域模式)
我也是糊里糊涂所以就用单点测光。还是那个问题,大家在什么情况下用什么模式呢?
Closest subject(最近主体)
Dynamic area(动态区域)
Single point(单点)
(3)关于ViewNX
我这次的照片有raw文件,ViewNX中的Exposure Comp可以用来加/减曝光吧?所不同的
是,我机器上能到-/+5(每0.3一变),软件中只到-/+2。
===============================================
做一下对比。1_01和2_01是相机直出... 阅读全帖 |
|
w*****1 发帖数: 473 | 25 如果我还是用space delimiter,就是要改成:
join -t" " -a1 test1 test2 > test3
awk -F" " 'BEGIN{for(i=1;i<=2;i++) testvar=testvar"|0"}NF<5 {print $
0testvar;
next}{print $0}' test3 > test4
是吗?谢谢! |
|
i*e 发帖数: 352 | 26 awk中NF意思是记录的域的个数,换句话说就是你用分隔符划分后的column的个数
test1和test2合并之后的test3有5列
NF<5指的就是那些需要补充后续0的行
i<=2是说循环2次,因为test1有3列,test3有5列,相差2列 |
|
m**x 发帖数: 205 | 27 来自主题: _Meteor_Shower版 - test2 test |
|
X***y 发帖数: 3947 | 28 no, never met him.
test1
test2 |
|
|
|
h**r 发帖数: 427 | 31 来自主题: _FreeSpace版 - test2 啊。。。我心爱的猪嘴花总算回来了
盹盹盹 |
|