楼主: dxystata
2795 9

如何得到字符型变量的每一行的非缺失值 [推广有奖]

版主

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183720 个
通用积分
15261.1895
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
297528 点
帖子
5560
精华
1
在线时间
13604 小时
注册时间
2006-6-21
最后登录
2024-11-4

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

50论坛币
var1 var2 var3
a  
          b   
该数据集中var1 var2 var3 均为字符型变量,如何得到一个新变量x,其值为字符型变量var1 var2 var3的每一行的非缺失值? 谢谢!
结果为
x
a
b



关键词:字符型变量 字符型 缺失值 VaR 新变量 如何
沙发
mingfeng07 学生认证  发表于 2015-1-10 18:26:09 |只看作者 |坛友微信交流群
  1. data a;
  2. var1='a';var2='';var3='';output;
  3. var1='';var2='b';var3='';output;
  4. run;
  5. data want(drop=i);
  6. set a;
  7. array a{*} var1 var2 var3;
  8. do i=1 to dim(a);
  9. if a(i)^='' then x=a(i);
  10. end;
  11. run;
复制代码

使用道具

藤椅
wpfwxn 发表于 2015-1-10 19:33:20 |只看作者 |坛友微信交流群
用cat函数

使用道具

板凳
sas9.4 发表于 2015-1-10 19:49:39 |只看作者 |坛友微信交流群
data xxx;
  set table1;
  newvar=  catx('', var1,var2,var3);
run;

使用道具

报纸
teqel 发表于 2015-1-10 21:26:22 |只看作者 |坛友微信交流群
  1. data a;
  2. array var{3} $;
  3. input var1-var3;
  4. t=cats(of var{*});
  5. cards;
  6. a . .
  7. . b .
  8. ;
复制代码

使用道具

地板
Tigflanker 发表于 2015-1-10 21:37:13 |只看作者 |坛友微信交流群
  1. data have;
  2.   input var1 $ var2 $ var3 $;
  3.   cards;
  4. a . .
  5. . b .
  6. run;

  7. proc transpose data = have out = want;
  8.   var var:;
  9. run;

  10. data want;
  11.   set;

  12.   x = coalescec(of col:);
  13. run;
复制代码

使用道具

7
sas9.4 发表于 2015-1-12 20:51:46 |只看作者 |坛友微信交流群
Tigflanker 发表于 2015-1-10 21:37
你这样写如果有多个非缺失值呢?

使用道具

8
我舅是_黄蓉 发表于 2015-1-13 09:14:04 |只看作者 |坛友微信交流群
Tigflanker 发表于 2015-1-10 21:37
如果是这样,就弄不出来了(一个变量有两个非缺失值)
data have;
  input var1$ var2 $ var3 $;
  cards;
a e .
. b .
run;

使用道具

9
就喜欢马 发表于 2015-1-13 11:46:55 |只看作者 |坛友微信交流群
sas9.4 发表于 2015-1-12 20:51
你这样写如果有多个非缺失值呢?
假如多个非缺失值都放在一个变量中,用‘/’分开,则
  1. proc sql;
  2. select name into :varlist
  3. separated by " "
  4. from dictionary.columns
  5. where libname="WORK" and memname="M";/*只要改这里的逻辑库和逻辑库中的数据集名就可以了*/
  6. quit;
  7. proc sql;
  8. select name into :varlist2
  9. separated by ","
  10. from dictionary.columns
  11. where libname="WORK" and memname="M";/*只要改这里的逻辑库和逻辑库中的数据集名就可以了*/
  12. quit;
  13. data mm;
  14. set m;
  15. array m[*] &varlist;
  16. do i=1 to dim(m);
  17. x=catx('/',&varlist2);
  18. end;
  19. run;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

总评分: 论坛币 + 50   查看全部评分

使用道具

10
Tigflanker 发表于 2015-1-14 20:27:39 |只看作者 |坛友微信交流群
coalescec 函数本来就是取他参数列表中第一个出现的字符型非缺失值。

至于怎么用,看楼主数据意图了。

若是一票变量的值都要汲取,那当然是用cat族函数最妥当了。

使用道具

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

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

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

GMT+8, 2024-11-5 12:51