楼主: Imasasor
9326 20

input读入原始数据,datalines和txt中的区别? [推广有奖]

  • 1关注
  • 64粉丝

VIP

已卖:215份资源

学科带头人

33%

还不是VIP/贵宾

-

TA的文库  其他...

超哥喜欢的文章

威望
1
论坛币
47033 个
通用积分
3.1376
学术水平
238 点
热心指数
246 点
信用等级
231 点
经验
37102 点
帖子
849
精华
3
在线时间
2235 小时
注册时间
2012-7-4
最后登录
2024-10-10

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

楼主
Imasasor 发表于 2012-9-5 21:21:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
同样的程序,同样的数据,放到txt中,和datalines中,结果不一样,求高手解释,我的b.txt中的数据结构是直接从datalines中复制过去的,高手可以也试一下。
  1. data b;
  2. infile "D:\b.txt";
  3. input x $6. y $ 7-10;
  4. run;

  5. proc print;
  6. run;

  7. data e;
  8. input x $6. y $ 7-10;
  9. cards;
  10. hello trace
  11. nihao
  12. shui sfg
  13. ge
  14. ;
  15. run;
  16. proc print;
  17. run;
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:Input Lines 原始数据 line Data hello 程序

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

沙发
Imasasor 发表于 2012-12-1 21:58:45
这个问题多年前提出过,还没人帮我,求高手帮一下
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
webgu 发表于 2012-12-1 23:12:37
这个问题值得好好细究下。同样有困或。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

板凳
ziyenano 发表于 2012-12-2 00:10:24
外部文件中的导入结果是可以理解的,默认的选项是flowover;
当该行长度不够的时候,直接由下一条记录读入一个变量,改成truncover;
就不会由于长度问题,跳过该行了。
在cards或者datalines,我以前在哪里看到过,和读入外部文件还是有点不同的,
我的理解是,在cards中,每行数据后面其实都是填满空格的(空格不一定准确呐)
比如nihao这行观测,它的长度并不是5,后面填满了空格,从而在读入的时候,
flowover选项就不会因为长度不足,而跳过该行观测,
此外lercl选项在 infile cards中是无效的,就是说在cards中设置一行的长度是无效的;
在这个例子中,读入外部文件的时候,lercl默认为256,加上pad选项,即长度不足256
的观测,后面都填上空格,直到长度为256,这样的话,即使不用truncover选项,
读入的数据也是和从cards读入一样的。
解释的有点罗嗦呐~


报纸
webgu 发表于 2012-12-2 00:48:17
ziyenano 发表于 2012-12-2 00:10
外部文件中的导入结果是可以理解的,默认的选项是flowover;
当该行长度不够的时候,直接由下一条记录读入一 ...
有些接近真相了。

data demo;
  infile datalines;
  input  testnum  $81.;
datalines;
1
22
333
4444
55555
;
run;

这个其实相当于flowover,结果是
22
4444

请教怎么解释?

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

地板
webgu 发表于 2012-12-2 00:49:47
webgu 发表于 2012-12-2 00:48
有些接近真相了。

data demo;
这个好像跟cardimage又扯上关系了。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

7
ziyenano 发表于 2012-12-2 01:21:40
data demo;
  infile datalines pad;
  input  testnum  $80.;
datalines;
1
22
333
4444
55555
;
run;

好像80是个界限

8
webgu 发表于 2012-12-2 09:03:57
ziyenano 发表于 2012-12-2 01:21
data demo;
  infile datalines pad;
  input  testnum  $80.;
81 的是候,是相当于flowover的,要下一行读。但结果为什么是
22
4444

过程是怎样的?
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

9
pobel 在职认证  发表于 2012-12-2 09:56:26
以前的帖子也涉及到过datalines读入的问题
https://bbs.pinggu.org/forum.php? ... d=934308&page=1
和谐拯救危机

10
pobel 在职认证  发表于 2012-12-2 10:02:29
ziyenano 发表于 2012-12-2 01:21
data demo;
  infile datalines pad;
  input  testnum  $80.;
好像确实和80的倍数有关系:

data demo;
   infile datalines pad;
   input  testnum  $8. @@;
   put _n_= _infile_;
datalines;
1
22
333
4444
55555
;
run;

log:
95   data demo;
96      infile datalines pad;
97      input  testnum  $8. @@;
98      put _n_= _infile_;
99    datalines;

_N_=1  1
_N_=2  1
_N_=3  1
_N_=4  1
_N_=5  1
_N_=6  1
_N_=7  1
_N_=8  1
_N_=9  1
_N_=10  1
_N_=11  22
_N_=12  22
_N_=13  22
_N_=14  22
_N_=15  22
_N_=16  22
_N_=17  22
_N_=18  22
_N_=19  22
_N_=20  22
_N_=21  333
_N_=22  333
_N_=23  333
_N_=24  333
_N_=25  333
_N_=26  333
_N_=27  333
_N_=28  333
_N_=29  333
_N_=30  333
_N_=31  4444
_N_=32  4444
_N_=33  4444
_N_=34  4444
_N_=35  4444
_N_=36  4444
_N_=37  4444
_N_=38  4444
_N_=39  4444
_N_=40  4444
_N_=41  55555
_N_=42  55555
_N_=43  55555
_N_=44  55555
_N_=45  55555
_N_=46  55555
_N_=47  55555
_N_=48  55555
_N_=49  55555
_N_=50  55555
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
NOTE: The data set WORK.DEMO has 50 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.05 seconds
      cpu time            0.04 seconds


105   ;
106   run;
和谐拯救危机

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

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