SAS中文论坛
标题:
新手提问
[打印本页]
作者:
shiyiming
时间:
2010-7-8 05:19
标题:
新手提问
我有一列数:1 1 1 2 2 1 1 2 1.。。。,然后我想将前m个1变成2,将后n个2变成1,要怎么做?其实这个是我在做assign phenotype时候遇到的问题。我之前都是手动。。。发现效率太低,觉得SAS应该可以做。我的想法是,是不是可以新加入一个变量,相当于指针的作用。 但是不清楚具体步骤。 虚心求教。万分感谢。
作者:
shiyiming
时间:
2010-7-8 08:50
标题:
Re: 新手提问
不会assign phenotype,大概是这样吧
[code:1ie37h40]%let m=5;
data raw;
input var @@;
if _n_ le &m then new_var=ifn(var=1,2,var);
else new_var=ifn(var=2,1,var);
/* alternatively*/
/* new_var=ifn(_n_ le &m,2,1);*/
datalines;
1 1 1 9 2 1 1 2 1
;[/code:1ie37h40]
作者:
shiyiming
时间:
2010-7-8 08:54
标题:
Re: 新手提问
前m个,后n个?什么意思?如果只是要把1--》2 ,2---》1. 用y = 3-x 不就行了。
作者:
shiyiming
时间:
2010-7-8 08:55
标题:
Re: 新手提问
走国际路线的就是厉害 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者:
shiyiming
时间:
2010-7-8 09:35
标题:
Re: 新手提问
我要是知道你已经占坑准备解答了。我就不出臭了。害得我,丑也出了。。。。
作者:
shiyiming
时间:
2010-7-8 10:05
标题:
Re: 新手提问
这比喻真恶心,action的时候你就不能装的淑女一点,好歹也是国际咖呀 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者:
shiyiming
时间:
2010-7-9 00:02
标题:
Re: 新手提问
[quote="jingju11":eohh2n9g]前m个,后n个?什么意思?如果只是要把1--》2 ,2---》1. 用y = 3-x 不就行了。[/quote:eohh2n9g]
就是说:如果m=2,n=1,我要做的就是将1,2,2,2,1,1,1,2,2,1,2,1转化成1,1,1,2,1,1,1,2,2,2,2
作者:
shiyiming
时间:
2010-7-9 00:58
标题:
Re: 新手提问
[quote:1420k8cl]将前m个1变成2,将后n个2变成1...[/quote:1420k8cl]
又说反了吧?
作者:
shiyiming
时间:
2010-7-9 01:28
标题:
Re: 新手提问
反正
[code:13u1f1tm]data have;
input x @@; cards;
1 2 2 2 1 1 1 2 2 1 2
;
data have_1;
do until(Eof1);
set have end = Eof1;
n1 = sum(n1, x=1); n2 = sum(n2, x=2);
end;
do until(Eof2);
set have end = Eof2;
n_1+x=1; n_2+x=2;
x_new = x;
if (n_2 le 2 and x = 2) then x_new = 1; *first m = 2;
if (n1-n_1 lt 1 and x = 1) then x_new = 2; *last n = 1;
output;
end;
keep x x_new;
run;[/code:13u1f1tm]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2