SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 755|回复: 8
打印 上一主题 下一主题

新手提问

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-7-8 05:19:19 | 只看该作者

新手提问

我有一列数:1 1 1 2 2 1 1 2 1.。。。,然后我想将前m个1变成2,将后n个2变成1,要怎么做?其实这个是我在做assign phenotype时候遇到的问题。我之前都是手动。。。发现效率太低,觉得SAS应该可以做。我的想法是,是不是可以新加入一个变量,相当于指针的作用。 但是不清楚具体步骤。 虚心求教。万分感谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-7-8 08:50:00 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-7-8 08:54:07 | 只看该作者

Re: 新手提问

前m个,后n个?什么意思?如果只是要把1--》2 ,2---》1. 用y = 3-x 不就行了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-7-8 08:55:59 | 只看该作者

Re: 新手提问

走国际路线的就是厉害 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-7-8 09:35:29 | 只看该作者

Re: 新手提问

我要是知道你已经占坑准备解答了。我就不出臭了。害得我,丑也出了。。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-7-8 10:05:28 | 只看该作者

Re: 新手提问

这比喻真恶心,action的时候你就不能装的淑女一点,好歹也是国际咖呀  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-7-9 00:02:34 | 只看该作者

Re: 新手提问

[quote=&quot;jingju11&quot;: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
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-7-9 00:58:23 | 只看该作者

Re: 新手提问

[quote:1420k8cl]将前m个1变成2,将后n个2变成1...[/quote:1420k8cl]
又说反了吧?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2010-7-9 01:28:46 | 只看该作者

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]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 05:09 , Processed in 0.070477 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表