楼主: 紫冰儿
2581 6

急问,有个带间隔符的数据处理问题,谢谢。。。 [推广有奖]

  • 0关注
  • 0粉丝

大专生

43%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
424 点
帖子
32
精华
0
在线时间
67 小时
注册时间
2009-2-22
最后登录
2016-7-17

楼主
紫冰儿 发表于 2013-2-28 10:55:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原数据部分如下
data a;
input xx $20.;
cards;
0|1|0|1|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0|1|0|1|0
0|1|0|1|0|0|0|0
0|0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0
;
run;


现在只有一个变量,要处理成每个间隔符间表示一个变量的格式,比如第一行就是6个变量,第二行就是8个。好像用scanq函数可以,但是我没写出来。哪位帮下忙,小女子多谢了。。。
二维码

扫码加我 拉你入群

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

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

关键词:数据处理问题 数据处理 cards Input scan 间隔 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

沙发
Imasasor 发表于 2013-2-28 10:59:46
你有男朋友吗?
假设你最长的一行为8个变量
data a;
infile datalines dlm="|" truncover;
input x1-x8;
cards;
0|1|0|1|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0|1|0|1|0
0|1|0|1|0|0|0|0
0|0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0
;
run;
proc print;
run;
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
紫冰儿 发表于 2013-2-28 11:16:21
Imasasor 发表于 2013-2-28 10:59
你有男朋友吗?
假设你最长的一行为8个变量
data a;
先谢谢你了,你那方法可以的。但是我这样再写一个data步为什么输出不了,因为我的源数据有好多个


data a1;
set a;
input x1-x8;
infile datalines dlm="|" truncover;
run;
proc print;
run;

板凳
Imasasor 发表于 2013-2-28 12:49:02
  1. data a;
  2. input var $60.;
  3. cards;
  4. 0|1|0|1|0|0
  5. 0|1|0|1|0|0|0|0
  6. 0|1|0|1|0
  7. 0|1|0|1|0|0|0|0
  8. 0|1|0|1|0|0|0|0
  9. 0|1|0|1|0|1|0|1|0
  10. 0|1|0|1|0|0|0|0
  11. 0|0|1|0|1|0
  12. 0|1|0|1|0|0|0|0
  13. 0|1|0|1|0|0|0
  14. ;
  15. run;


  16. proc sql;
  17. select (max(length(var))+1)/2 into:n from a;
  18. quit;

  19. data b(drop=i);
  20. set a;
  21. array x(&n);
  22. do i=1 to &n;
  23. x(i)=input(scan(var,i),best12.);
  24. end;
  25. run;
复制代码
假设你已有存在的数据集a,内有变量var形式如上,假设每个var中间隔符号比较规则,没有连续的两个分隔符,上述code可以使用
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

报纸
webgu 发表于 2013-2-28 13:40:48
紫冰儿 发表于 2013-2-28 11:16
先谢谢你了,你那方法可以的。但是我这样再写一个data步为什么输出不了,因为我的源数据有好多个
infile datalines和input联用是用来读流式文件的。infile一般在input 之前。后面要跟datalines或cards及数据。

set直接读数据集,不需要用INPUT了。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

地板
紫冰儿 发表于 2013-2-28 13:51:44
Imasasor 发表于 2013-2-28 12:49
假设你已有存在的数据集a,内有变量var形式如上,假设每个var中间隔符号比较规则,没有连续的两个分隔符,上 ...
可以了,多谢哈!

7
bobguy 发表于 2013-3-1 07:32:12
Is it what you want?

data a;
infile cards;
input;
n=countc(_infile_,'|')+1*(countc(_infile_,'|')>0);
cards;
0|1|0|1|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0|0
0|1|0|1|0|1|0|1|0
0|1|0|1|0|0|0|0
0|0|1|0|1|0
0|1|0|1|0|0|0|0
0|1|0|1|0|0|0
0
;
proc print;run;

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

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