楼主: fzdream
9320 11

关于sas中_n_的问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:75份资源

本科生

13%

还不是VIP/贵宾

-

威望
0
论坛币
176 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
512 点
帖子
41
精华
0
在线时间
38 小时
注册时间
2009-9-28
最后登录
2013-5-17

楼主
fzdream 发表于 2011-7-6 09:20:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问 如何用_n_表示最后一列的数据?或者用什么去定位最后一列呢?
我想用宏变量去使用每个数据集最后一列的数据
二维码

扫码加我 拉你入群

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

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

关键词:如何用 数据集 SAS

回帖推荐

yugao1986 发表于6楼  查看完整内容

我的想法是这样的:你的数据中变量是字符型和数值型的变量,利用数组找到最后一个字符型变量和数值型变量,没有end=eof和楼上point=nobs来的直接,例如: 1# fzdream

本帖被以下文库推荐

沙发
yugao1986 发表于 2011-7-6 09:42:28
1.可否考虑转置后,利用end=eof找到最后一列的变量
2.利用数组ARRAY
已有 1 人评分热心指数 收起 理由
crackman + 1 鼓励积极发帖讨论

总评分: 热心指数 + 1   查看全部评分

三人行必有我师

藤椅
醉_清风 发表于 2011-7-6 09:44:39
同意楼上用end的写法
data a;
set b end=eof;
if end;
run;
很久不用SAS了 貌似是这样
从来不需要想起 永远也不会忘记

板凳
bobguy 发表于 2011-7-6 09:45:59
fzdream 发表于 2011-7-6 09:20
请问 如何用_n_表示最后一列的数据?或者用什么去定位最后一列呢?
我想用宏变量去使用每个数据集最后一列的数据
You may consider using point option to access the last observation directly. Here is an example to illustrate the idea.

49   data t1;
50      seed=123;
51      n=ceil(ranuni(seed)*100);
52      do i=1 to n;
53          y=rannor(seed);
54         output;
55      end;
56   run;
NOTE: The data set WORK.T1 has 76 observations and 4 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

57
58   data _null_;
59      set t1 point=nobs nobs=nobs;
60      call symputx('yvalue', y);
61      stop;
62   run;
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

63
64   %put >>>>y=&yvalue<<<<;
>>>>y=-0.56309658011143<<<<

报纸
fzdream 发表于 2011-7-6 10:05:31
如何利用数组呢 2# yugao1986

地板
yugao1986 发表于 2011-7-6 11:04:27
我的想法是这样的:你的数据中变量是字符型和数值型的变量,利用数组找到最后一个字符型变量和数值型变量,没有end=eof和楼上point=nobs来的直接,例如:
  1. data need(keep=charname numname);
  2. set sashelp.class;
  3. array varc {*} $ _character_;
  4. array varn {*} _numeric_;
  5. p=dim(varc);
  6. q=dim(varn);
  7. charname=varc{p};
  8. numname=varn{q};
  9. run;
复制代码
1# fzdream
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

三人行必有我师

7
soporaeternus 发表于 2011-7-6 12:51:32
列的话要用元数据的
大约几种方式
sashelp的元数据视图
proc contents
open

行的话,4楼那种是最快的,前提是支持point的读取
Let them be hard, but never unjust

8
栾昭昭 发表于 2011-11-29 10:30:18
yugao1986 发表于 2011-7-6 09:42
1.可否考虑转置后,利用end=eof找到最后一列的变量
2.利用数组ARRAY
那请问如何实现转置呢?
one apple one day

9
tj0412ymy 发表于 2011-11-29 11:15:58
栾昭昭 发表于 2011-11-29 10:30
那请问如何实现转置呢?
转置之后的好处是可以利用array提取出最后一列中的任何一个值。

  1. proc transpose data=sashelp.class out=class;
  2. var name sex age height weight;
  3. run;

  4. data select(keep=new);
  5. set class end=eof nobs=obs;
  6. array allvar{*} _all_;
  7. d=dim(allvar);
  8. if eof then do;
  9. new=allvar(d);output;
  10. end;
  11. run;
  12. proc print;run;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

10
suzhzh 发表于 2011-12-4 15:38:06
That is true.

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

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