楼主: Laughing06
28331 12

在SAS中如何删除一整行的observation??? [推广有奖]

  • 4关注
  • 0粉丝

大专生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
499 点
帖子
37
精华
0
在线时间
51 小时
注册时间
2013-3-13
最后登录
2016-5-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
问题如标题,具体如下:比如我的数据集如下,ID    test     value
01                .      
02    a          11
03    b          22
04    c          33
05                .
06    d          44
07    e          55
变量test为空值的行我都不需要,比如上例中的ID=01,05的两行;即将这两行删除,保留其他行。
请问如何在SAS中实现该过程???
求大神解答。晚辈先在此谢过!!!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:observation observat ATION ATI VAT 如何

已有 1 人评分经验 收起 理由
eijuhz + 4 鼓励积极发帖讨论

总评分: 经验 + 4   查看全部评分

沙发
xiangxiang0004 发表于 2013-9-27 13:57:06 |只看作者 |坛友微信交流群
if test=" " then delete;
不懂得珍惜,就不配拥有。

使用道具

藤椅
Laughing06 发表于 2013-9-27 13:59:50 |只看作者 |坛友微信交流群
xiangxiang0004 发表于 2013-9-27 13:57
if test=" " then delete;
恩,成功了。非常感谢!

使用道具

板凳
是风啊 发表于 2013-9-27 23:42:15 |只看作者 |坛友微信交流群
楼主,我有几个问题想请教您,从原始数据集来看,空格表示字符型数据的缺失,句号表示数值型数据的缺失,现在对于您的问题,为了更加全面,个人觉得剔除条件是不是应该是只要一个观测值中有一个变量为空,就应该把这一观测值剔除,即'  test="" | value="."  ',正如楼主您想要的结果,但是我的程序运行结果并不是预期的结果,少了两个观测即两行,还请楼主把程序借我看一下吧,谢谢了,嘿嘿,我的程序运行结果是:


                 SAS 系统                  2013年09月27日 星期五 下午11时10分13秒   7

                                                  Obs    id    test    value

                                                   1      3     b        22
                                                   2      4     c        33
                                                   3      7     e        55

使用道具

报纸
妖帝东皇 发表于 2013-9-28 09:08:22 |只看作者 |坛友微信交流群
是风啊 发表于 2013-9-27 23:42
楼主,我有几个问题想请教您,从原始数据集来看,空格表示字符型数据的缺失,句号表示数值型数据的缺失,现 ...
data a;
input ID test$ value@;
cards;
01   .      
02 a 11
03 b 22
04 c 33
05   .
06 d 44
07 e 55
;
run;
data b;
set a;
if test="" or value="." then delete;
run;
你的程序是不是大概这样的?
因为你创建第一个数据步的时候,字符空值是空格号,所以读取的时候他会跳过,直接读取下一个点号;你运行程序看看数据集a就能发现了!
data a;
input ID test$ value@;
cards;读取数据时,即便是空值也要写上点号,不然会跳过导致数据混乱!
┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

使用道具

地板
是风啊 发表于 2013-9-28 09:30:02 |只看作者 |坛友微信交流群
妖帝东皇 发表于 2013-9-28 09:08
data a;
input ID test$ value@;
cards;
我的程序是这样的
data a;
input ID test$ value;
if test="" | value="." then delete;
cards;
01   .  
02 a 11
03 b 22
04 c 33
05   .
06 d 44
07 e 55
;
proc print data=a;
run;

但是运行结果没有达到预期结果,

使用道具

7
妖帝东皇 发表于 2013-9-28 09:31:37 |只看作者 |坛友微信交流群
是风啊 发表于 2013-9-28 09:30
我的程序是这样的
data a;
input ID test$ value;
就是类似我给你写的嘛~你看看那文字解释就知道了~~
┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

使用道具

8
是风啊 发表于 2013-9-28 09:31:58 |只看作者 |坛友微信交流群
xiangxiang0004 发表于 2013-9-27 13:57
if test=" " then delete;
xiangxiang0004
可否把程序给分享一下,谢谢

使用道具

9
是风啊 发表于 2013-9-28 09:42:22 |只看作者 |坛友微信交流群
妖帝东皇 发表于 2013-9-28 09:08
data a;
input ID test$ value@;
cards;
哦 谢谢,根据您说的,得到了预期的结果,这种问题还是第一次碰到,那要是数据多的话,还得在原始数据缺失值的地方都要加句号,这样是不是太那个了,,嘿嘿

使用道具

10
lifemg 发表于 2013-10-3 23:51:19 |只看作者 |坛友微信交流群
data data1;
set data1;
where test^='';
run;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-11-5 19:41