全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1407 4
2015-11-14
各位达人,新手一个,就教一个问题。

程序如下:


data nums;

    infile datalines dsddelimiter='ab';

    input X Y Z;

    datalines;

1aa2ab3

4b5bab6

7a8b9

;


有人解释为:上面指定a, b, aa, ab, ba, bb 作为分隔符,输出结果为:

                       OBS    X    Y    Z

                       1     1    .    2

                       2     4    5    .


                       3     7    8    9

问题来了,按照解释,第一行的数据,为什么不是读成“1  2  3”,“1aa2”中间的“aa”应该是分割符号吗?


谢谢各位达人了,新人的问题,别见笑!

二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-14 22:05:20
指定a或b为分隔符。
二维码

扫码加我 拉你入群

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

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

2015-11-15 10:03:08
longgb246 发表于 2015-11-14 22:05
指定a或b为分隔符。
那就好理解了,那原来的解释错了,他的解释是“ab”也可以是分隔符。谢谢了!
二维码

扫码加我 拉你入群

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

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

2015-11-17 19:08:49
我觉得大家好像理解还是有误。
运行如下程序:
data nums;
  infile datalines delimiter='ab';/*去掉了dsd选项*/
  input X Y Z;
  datalines;
1aa2ab3
4b5bab6
7a8b9
;
run;
proc print;
run;
返回结果为:
Obs    X    Y    Z
1     1    2    3
2     4    5    6
3     7    8    9
确实还是把a,b,aa,ab,ba和bb都作为分隔符了。

但是运行不去掉dsd的如下程序:
data nums;
  infile datalines dsd delimiter='ab';
  input X Y Z;
  datalines;
1aa2ab3
4b5bab6
7a8b9
;
run;
proc print;
run;
得到和楼主同样的结果如下:

  Obs X Y Z
1 1 . 2
2 4 5 .
3 7 8 9

我觉得原因是因为DSD有效时,在本程序中,认为把第二行数据4b5bab6中的bab认为是两个相邻的分隔符,认为前一个分隔符后的字段为缺失值,所以输出缺失值。

穷人认真回答问题发帖是为了挣论坛币~_~;申请奖励了。
二维码

扫码加我 拉你入群

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

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

2015-11-18 01:06:37
用字符串作为分隔符,用DLMSTR=
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群