楼主: zjtj12
6996 9

[问答] infile中的选项n= 和obs= 有什么区别? [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

硕士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
50 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4341 点
帖子
74
精华
0
在线时间
60 小时
注册时间
2016-4-19
最后登录
2016-10-14

楼主
zjtj12 发表于 2016-4-26 12:49:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助:不太理解SAS程序里infile中的选项n= 和obs= 有什么区别?data _null_;   infile datalines n=2 line=Linept col=Columnpt;   input name $ 1-15 #2 @3 id;   put linept= columnpt=;   datalines;J. Brooks  40974T. R. Ansen  4032;


二维码

扫码加我 拉你入群

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

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

关键词:infile file NFI obs column null 程序

回帖推荐

孤单的我们 发表于7楼  查看完整内容

_N_=1,input name $1-15从第一行datalines读取name=J. Brooks写入PDV向量, #2是“行指针控制”,#2 @3从第2个数据行第3列读取id=40974。此时_N_仍然为1。pdv中向量为_N_=1,name=J. Brooks,id=40974。output出来形成a1的第一条观测。 需要注意: When you use # pointer controls in an INPUT statement that are less than the value of N=, you might get unexpected results. #规定行数一定不能小于N规定的行数。

沙发
prince315 在职认证  发表于 2016-4-27 10:57:38
只知道obs是指的读取到第多少行,跟firstobs连用可以确定读取范围。比如firstobs=2 obs=10,就是读取2-10行。
n这个解释说跟line pointer相关,可能跟line= column=这种指针变量相关,但是具体不清楚。具体使用过程中,还没接触过:(

藤椅
孤单的我们 发表于 2016-4-27 11:05:56
n= 是指针控制选项,n=2是指数据行每读入2行,指针_N_才跳转一次,如果不设置n=选项,默认值为1

板凳
5傻小不点 发表于 2016-4-27 13:06:35
孤单的我们 发表于 2016-4-27 11:05
n= 是指针控制选项,n=2是指数据行每读入2行,指针_N_才跳转一次,如果不设置n=选项,默认值为1
能不能查看_N_的值?

报纸
孤单的我们 发表于 2016-4-27 13:08:37
5傻小不点 发表于 2016-4-27 13:06
能不能查看_N_的值?
put _n_ 或 put _all_

地板
5傻小不点 发表于 2016-4-27 13:53:34
孤单的我们 发表于 2016-4-27 11:05
n= 是指针控制选项,n=2是指数据行每读入2行,指针_N_才跳转一次,如果不设置n=选项,默认值为1
没懂n=到底是怎么工作的,麻烦帮忙看一下下面关于n=的测试有什么问题:
  1. data a;   infile datalines n=1 line=Linept col=Columnpt;;   input name $ 1-15 / id;   put _n_ linept= columnpt= ;   if _n_=3 then output;   datalines;J. Brooks40974T. R. Ansen  4032Monkey D. Luffy     5555;
复制代码


就是sashelp的例子稍微变动一下,看着有点乱,因为很多都理解不能就都写上去了。。。

觉得n=和_n_没什么关系,因为上面n分别取1,2,6什么的结果都一样啊?
col=line+读取的最后一条record占的列数?
如果line的range是从1到n=的值的话,为什么取n=1(就上面这个例子)输出的linept还是2?
如果用了/sas会不会看成#对应值这种形式?
sashelp里说n默认的是input中#的最大值或者缺省则为1,最好要让#的最大值等于n=的值,如果是小于可能结果不一样什么什么的,但就是试不出来这里n有什么影响。。。

7
孤单的我们 发表于 2016-4-27 14:18:05
5傻小不点 发表于 2016-4-27 13:53
没懂n=到底是怎么工作的,麻烦帮忙看一下下面关于n=的测试有什么问题:

就是sashelp的例子稍微变动一下 ...
_N_=1,input name $1-15从第一行datalines读取name=J. Brooks写入PDV向量,
#2是“行指针控制”,#2 @3从第2个数据行第3列读取id=40974。此时_N_仍然为1。pdv中向量为_N_=1,name=J. Brooks,id=40974。output出来形成a1的第一条观测。

需要注意:
When you use # pointer controls in an INPUT statement that are less than the value of N=, you might get unexpected results.
#规定行数一定不能小于N规定的行数。
  1. data a1;
  2.    infile datalines n=2 line=Linept col=Columnpt;
  3.    input name $ 1-15 #2 @3 id;
  4.    put linept= columnpt=;
  5.    datalines;
  6. J. Brooks
  7.   40974
  8. T. R. Ansen
  9.   4032
  10. ;
  11. run;


  12. data a2;
  13.    infile datalines n=3 line=Linept col=Columnpt;
  14.    input name $ 1-15 #2 @3 id #3 @3 age;
  15.    put linept= columnpt=;
  16.    datalines;
  17. J. Brooks
  18.   40974
  19.   34
  20. T. R. Ansen
  21.   4032
  22.   41
  23. ;
  24. run;
复制代码



8
5傻小不点 发表于 2016-4-27 14:40:47
孤单的我们 发表于 2016-4-27 14:18
_N_=1,input name $1-15从第一行datalines读取name=J. Brooks写入PDV向量,
#2是“行指针控制”,#2 @3从第 ...
也就是说col的值=2+record占的列数了咯?

9
孤单的我们 发表于 2016-4-27 14:44:33
5傻小不点 发表于 2016-4-27 14:40
也就是说col的值=2+record占的列数了咯?
字母意思就是n个数据行公用一个指针。

剩下的自己体会吧,help里有例子,动手改改

10
5傻小不点 发表于 2016-4-27 15:00:46
孤单的我们 发表于 2016-4-27 14:44
字母意思就是n个数据行公用一个指针。

剩下的自己体会吧,help里有例子,动手改改
恩!谢谢~
这不是体会不能才问你的么~

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

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