楼主: dxystata
4642 18

如何将第1列变量非缺失值所在行的上一行赋值为T [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2014-11-1 10:38:27 |AI写论文
50论坛币
  1. data aaa1;
  2. infile cards missover;
  3. input var$ x1$ y2;
  4. cards;
  5. a aa 1
  6. . .  2
  7. . bb 1
  8. . .  2
  9. . cc 1
  10. b aa 1
  11. . .  2
  12. . bb 1
  13. . .  2
  14. . cc 1
  15. . cc 2
  16. c aa 1
  17. . .  2
  18. . bb 1
  19. . .  2
  20. ;
  21. run;
复制代码
2014-11-01_102957.jpg
如何将第1列变量非缺失值所在行的上一行赋值为T,

2014-11-01_103530.jpg

得到的数据集:

2014-11-01_103144.jpg





关键词:缺失值 missover infile cards Input 如何

本帖被以下文库推荐

沙发
farmman60 发表于 2014-11-1 10:38:28
  1. data want;
  2.   merge aaa1 aaa1(firstobs=2 keep=var rename=var=_var);
  3.   if missing(var) and not missing(_var) then var='T';
  4.   drop _:;
  5.   run;
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
pobel + 5 + 3 + 3 + 3 精彩帖子
dxystata + 50 + 2 + 2 观点有启发

总评分: 经验 + 50  论坛币 + 5  学术水平 + 5  热心指数 + 5  信用等级 + 3   查看全部评分

藤椅
dxystata 发表于 2014-11-1 11:26:33
farmman60 发表于 2014-11-1 11:19
  1. data aaa1;
  2.         set aaa1;
  3.                 if ^missing(var) and _n_^=1 then call symput('tag',_n_-1);
  4.                 if _n_=&tag then var="T";
  5. run;
复制代码
如何能使call symput循环呢?

板凳
dxystata 发表于 2014-11-1 21:45:58
请pobel兄帮忙!

报纸
dxystata 发表于 2014-11-1 21:48:32
请pobel兄帮忙!

地板
pobel 在职认证  发表于 2014-11-2 09:17:29
dxystata 发表于 2014-11-1 21:48
请pobel兄帮忙!
我想不到比沙发更好的方法

7
dxystata 发表于 2014-11-2 09:57:18
pobel 发表于 2014-11-2 09:17
我想不到比沙发更好的方法
用call symput或proc sql可以实现吗?

8
pobel 在职认证  发表于 2014-11-2 10:36:11
dxystata 发表于 2014-11-2 09:57
用call symput或proc sql可以实现吗?
不用data步的话,我实现不了。
proc sql noprint;
   select  (^missing(var))*(monotonic()-1) into:tobs separated by "*"
     from aaa1;
quit;

data want;
    set aaa1;
        if index(cats("*","&tobs","*"),cats("*",_n_,"*")) then var="T";
run;
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 50 + 3 + 3 观点有启发

总评分: 经验 + 50  学术水平 + 3  热心指数 + 3   查看全部评分

9
pobel 在职认证  发表于 2014-11-2 10:39:24
dxystata 发表于 2014-11-2 09:57
用call symput或proc sql可以实现吗?
用call symput() 肯定也不如沙发的程序更清晰。
为什么非得用call symput 或proc sql?

10
dxystata 发表于 2014-11-2 10:40:42
pobel 发表于 2014-11-2 10:39
用call symput() 肯定也不如沙发的程序更清晰。
为什么非得用call symput 或proc sql?
你说得有理,谢谢啦!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 04:13