楼主: linhaoran
3454 10

[问答] 同一代码,Base和EG反馈结果不同。200金求解! [推广有奖]

  • 0关注
  • 0粉丝

博士生

88%

还不是VIP/贵宾

-

威望
0
论坛币
230 个
通用积分
8.9003
学术水平
23 点
热心指数
21 点
信用等级
17 点
经验
15182 点
帖子
109
精华
0
在线时间
646 小时
注册时间
2007-12-11
最后登录
2025-5-7

楼主
linhaoran 发表于 2013-5-18 11:38:38 |AI写论文
200论坛币


在Base中和EG中运行以下代码,得到的结果不同(附图)。EG下结果正确,但SAS Base似乎不能正确识别'09'x的分隔符。

BASE下 dlm=换成"(tab键)"可得到正确结果,但对于英文户名中含空格的情况,又会有问题。

Eg选择两种dlm方式都没有问题。

环境:Sas9.2(XP),9.3(Win7 64位) , EG4.3



200金求解。

  1. data x;
  2.         infile datalines dlm='09'x dsd missover;
  3.         informat party_id $100. party_name $100. corp_type_cd $2.;
  4.         input party_id party_name $ corp_type_cd $;
  5. datalines;
  6. 111111111111111        兴业银行股份有限公司        3
  7. 222222222222222        台湾银行        3
  8. 333333333333333        泰国泰华农民银行        3
  9. ;
  10. run;
复制代码


EG下结果 Base下的结果

EG下的结果.jpg (22.34 KB)

EG下的结果.jpg

Base 下的结果.jpg (29.06 KB)

Base 下的结果.jpg

最佳答案

boe 查看完整内容

用户名中包含空格,其他分隔符为tab,在datalines中不能实现,infile源文件 data x; infile "C:\Users\Administrator\Desktop\aa.txt" dlm='09'x missover; informat party_id $100. party_name $100. corp_type_cd $2.; input party_id party_name $ corp_type_cd $; run;
关键词:Base 结果不同 missover SAS base informat 兴业银行 英文

沙发
boe 发表于 2013-5-18 11:38:39
用户名中包含空格,其他分隔符为tab,在datalines中不能实现,infile源文件
data x;
        infile "C:\Users\Administrator\Desktop\aa.txt" dlm='09'x missover;
        informat party_id $100. party_name $100. corp_type_cd $2.;
        input party_id party_name $ corp_type_cd $;
run;
Gorgeous girl , I love !

藤椅
boe 发表于 2013-5-18 12:26:35
如果原始数据分隔符是空格,可以试试:
data x;
        informat party_id $100. party_name $100. corp_type_cd $2.;
        input party_id party_name & $ corp_type_cd $;
datalines;
111111111111111        兴业银行股份有限公司        3
222222222222222        台湾银行        3
333333333333333        泰国泰华农民银行        3
444444444444444        abcder deg de        3
;
run;

BASE,EG均可。
Gorgeous girl , I love !

板凳
linhaoran 发表于 2013-5-18 13:43:32
原始数据是tab分割的,而且数据量大,难以替换。

且部分户名中包含空格。

报纸
pl172231 发表于 2013-5-18 14:46:22
盗版的原因,因为eg是正版所以没问题,base是盗版所以不能处理,我的盗版sas画图只能画一张,再想画还得proc dataset 把之前那张删掉,都是盗版的问题

地板
linhaoran 发表于 2013-5-18 18:39:30
pl172231 发表于 2013-5-18 14:46
盗版的原因,因为eg是正版所以没问题,base是盗版所以不能处理,我的盗版sas画图只能画一张,再想画还得pro ...
跟盗版没有关系。

Base也是正版的。

7
spssone 发表于 2013-5-18 19:54:36
运行结果是一样的,都有缺失

8
linhaoran 发表于 2013-5-20 20:00:01 来自手机
没一个明白人吗?

9
geniusv 发表于 2013-5-20 22:57:04
楼上不是有个人回答了吗?在base的编辑器中不认tab字符,但是可能eg的编辑器可以认。所以你不能在程序中datalines后插入源数据,如果是外部数据应该是可以用infile读入的。
如果你不确定infile可以读入其中的数据,可以把数据拷贝到excel中,然后利用里面得分列功能把tab当做delimiter来拆分数据,然后用proc import读入。

10
linhaoran 发表于 2013-5-21 14:38:03 来自手机
谢谢楼上各位的帮助。自己也查了一下文档,原来自打8.2就发现有这个问题,一直到了9.3也没解决。

一个不完善的dm还一直在用,eg中又悄无声息的修正了。sas这公司真是够垃圾的,就为了多卖点钱,明明已经被代替了的东西还坚持保留着。

都快赶上中国国企了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 06:56