楼主: dxystata
209 3

[有偿编程] 根据字符变量x中取值的顺序,得到新的变量y· [分享]

版主

学术权威

94%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
160832 个
通用积分
13291.8524
学术水平
201 点
热心指数
255 点
信用等级
166 点
经验
223345 点
帖子
3958
精华
1
在线时间
10301 小时
注册时间
2006-6-21
最后登录
2019-11-13

初级学术勋章 初级热心勋章

dxystata 发表于 2019-7-12 23:50:20 |显示全部楼层
10论坛币
  1. data aaa;
  2. input x$;
  3. cards;
  4. a
  5. b
  6. a
  7. c
  8. b
  9. c
  10. c
  11. .
  12. ;
  13. run;
复制代码
先根据字符变量x中取值的顺序,得到新的变量y,按照顺序分别为1 2 3。
x  y
a  1
b  2
a  1
c  3
b  2
c  3
c  3
    .

不要用if x="a" then y=1;  根据顺序判断。谢谢!

关键词:字符变量 Input cards card Data
stata SPSS
Bugjay 发表于 2019-7-13 10:55:19 |显示全部楼层
用first判断是否是新数据,再加一个自增数值
回复

使用道具 举报

glmswufe 发表于 2019-7-14 10:30:51 |显示全部楼层
data aaa;
input x$;
cards;
a
b
a
c
b
c
c
.
;
run;
data aaa;
set aaa;
id=_n_;
run;
proc sort data=aaa out=aaasort;
by x;
run;
data aaasort;
set aaasort;
by x;
if missing(x) then y=.;
else if not missing(x) then  if first.x=1 then y+1;
output;
run;
proc sort data=aaasort out=aaa;
by id;
run;
data aaa;
set aaa;
drop id;
run;



回复

使用道具 举报

wwang111 发表于 2019-7-24 22:57:31 |显示全部楼层
  1. proc sql;
  2. create table fmt1 as
  3. select x, min(obs) as n
  4. from
  5. (select x, monotonic() as obs
  6. from aaa
  7. where x ne '')
  8. group by 1
  9. order by 2;
  10. quit;

  11. data fmt2;
  12. set fmt1;
  13. label+1;
  14. rename x=start;
  15. fmtname="$order";
  16. type="C";
  17. run;

  18. proc format cntlin=fmt2;
  19. run;

  20. data wanted;
  21. set aaa;
  22. y=input(put(x,$order.),best.);
  23. run;
复制代码

回复

使用道具 举报

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

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-11-13 21:33