楼主: sushe1527
2416 11

谁来帮忙看下这个数据导入问题? [推广有奖]

  • 0关注
  • 37粉丝

VIP新手

教授

17%

还不是VIP/贵宾

-

威望
0
论坛币
3391 个
通用积分
2.7558
学术水平
125 点
热心指数
136 点
信用等级
89 点
经验
36433 点
帖子
1228
精华
1
在线时间
1068 小时
注册时间
2007-11-17
最后登录
2017-4-1

楼主
sushe1527 发表于 2009-8-27 00:23:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据显然是四列,名字是一列 带空格 需要整体导入 不要拆开的,谢谢关注

这个参考有错误
data example;
infile 'c:\x.txt'  ;
input Subj  : $3.  Name & $20.  DOB : mmddyy10. Salary  : dollar8.;
format DOB date9. Salary dollar8.;
run;


/*下面数据存到C盘 起名 x.txt  
001 Christopher Mullens 11/12/1955 $45,200
002 Michelle   Kwo 9/12/1955 $78,123
003 Roger W. McDonald 1/1/1960 $107,200
*/
二维码

扫码加我 拉你入群

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

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

关键词:数据导入 christopher McDonald michelle example 数据 帮忙

回帖推荐

david0 发表于5楼  查看完整内容

data example(drop=temp); length temp $20.; input Subj : $3. Name: & $20. temp $ @; if ...

坐看云起时 发表于4楼  查看完整内容

用&修饰字符变量,比如name一类的,与后面的变量至少又有两个空格,向前进一个,实际上就达到了两个空格的效果 下面是sas帮助文档中的举例说明 data list; infile file-specification; input name $ & score; run; It can read these input data records: ----+----1----+----2----+----3----+ Joseph 11 Joergensen red Mitchel 13 Mc Allister blue Su Ellen 14 Fischer-Simon green The & modifier ...

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2009-8-27 08:34:44
002 Michelle   Kwo  9/12/1955 $78,123
是不是这一行'Michelle' 和'Kwo'之间多了一个空格(delimiter)?
用&的话,'Michelle' 和'Kwo' 之间只能有一个空格,而'Kwo'之后要有两个以上空格。

藤椅
sushe1527 发表于 2009-8-27 10:46:34
pobel 发表于 2009-8-27 08:34
002 Michelle   Kwo  9/12/1955 $78,123
是不是这一行'Michelle' 和'Kwo'之间多了一个空格(delimiter)?
用&的话,'Michelle' 和'Kwo' 之间只能有一个空格,而'Kwo'之后要有两个以上空格。
牛 把kwo改成2个空格果然成功了 但如果真是一个空格的话,该如何处理呢?

板凳
坐看云起时 在职认证  发表于 2009-8-27 11:04:40
用&修饰字符变量,比如name一类的,与后面的变量至少又有两个空格,向前进一个,实际上就达到了两个空格的效果
下面是sas帮助文档中的举例说明
data list;
   infile file-specification;
   input name $ & score;
run;
It can read these input data records:

----+----1----+----2----+----3----+
Joseph   11 Joergensen  red
Mitchel  13 Mc Allister  blue
Su Ellen  14 Fischer-Simon  green
The & modifier follows the variable it affects in the INPUT statement. Because this format modifier follows NAME, at least two blanks must separate the NAME field from the SCORE field in the input data records.

You can also specify an informat with a format modifier, as shown here:
    input name $ & +3 lastname & $15. team $;In addition, this INPUT statement reads the same data to demonstrate that you are not required to read all the values in an input record. The +3 column pointer control moves the pointer past the score value in order to read the value for LASTNAME and TEAM.
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

报纸
david0 发表于 2009-8-27 11:17:28
data example(drop=temp);                                                                                                               
length temp $20.;                                                                                                               
input Subj  : $3.  Name: & $20. temp $ @;                                                                                       
if index(temp,'/')>0 then input   Salary  : dollar8.;                                                                           
else do;                                                                                                                        
Name=trim(Name)||' '||temp;                                                                                             
        input temp $  Salary  : dollar8.;                                                                                       
end;                                                                                                                           
DOB=input(temp,mmddyy10.);                        
format DOB date9. Salary dollar8.;                                                                                             
datalines;                                                                                                                              
001 Christopher Mullens  11/12/1955 $45,200                                                                                             
002 Michelle   Kwo  9/12/1955 $78,123                                                                                                   
003 Roger W. McDonald  1/1/1960 $107,200                                                                                                
;                                                                                                                                       
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
david0 发表于 2009-8-27 11:20:59
本例中,如果名字可能含两个空格的话:
data example(drop=temp);                                                                                                               
length temp $20.;                                                                                                               
input Subj  : $3.  Name: & $20. temp $ @;                                                                                       
if index(temp,'/')>0 then input   Salary  : dollar8.;                                                                           
else do;                                                                                                                        
        Name=trim(Name)||' '||temp;                                                                                             
        input temp $  Salary  : dollar8.;                                                                                       
end;                                                                                                                           
DOB=input(temp,mmddyy10.);                        
format DOB date9. Salary dollar8.;                                                                                             
datalines;                                                                                                                              
001 Christopher Mullens  11/12/1955 $45,200                                                                                             
002 Michelle   Kwo  9/12/1955 $78,123                                                                                                   
003 Roger W. McDonald  1/1/1960 $107,200                                                                                                
;                                                                                                                                       
run;

7
sushe1527 发表于 2009-8-27 11:23:38
谢谢 david,如果name和DOB之间不是两个空格
如果是手动删成一个空格的话 你是程序是跑不出来的


如何在这个基础上修改一下呢?

8
david0 发表于 2009-8-27 11:44:31
请看如下程序,适用于名字中任意空格,名字后一个或多个空格。
data example(drop=temp);                                                                                                               
length temp $20.;                                                                                                                       
input Subj  : $3.  Name: $20. temp $ @;                                                                                                
do while(index(temp,'/')=0);                                                                                                            
   Name=trim(Name)||' '||temp;                                                                                                         
   input temp $ @;                                                                                                                     
end;                                                                                                                                    
input   Salary  : dollar8.;                                                                                                            
DOB=input(temp,mmddyy10.);                                                                                                              
format DOB date9. Salary dollar8.;                                                                                                      
datalines;                                                                                                                              
001 Christopher                        Mullens 11/12/1955 $45,200                                                                       
002 Michelle     Kwo 9/12/1955 $78,123                                                                                                  
003 Roger         W.       McDonald              1/1/1960 $107,200                                                                                   
;                                                                                                                                       
run;

9
yongyitian 发表于 2009-8-27 11:47:49
data example;
infile 'c:\x.txt' truncover;
input aline $50. ;
line = compbl(aline);
; run;
data _null_;
  file 'C:\xx.txt';
  set example (keep=line);
  put line;
run;

10
sushe1527 发表于 2009-8-27 12:27:58
问题解决,谢谢关注以及大家的回帖

尤其感谢 david0 的程序 使我犹如 醍醐灌顶 拨云见日的感觉 成语不多 聊表谢意

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

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