全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
800 7
2022-04-18
悬赏 20 个论坛币 已解决
复制代码
希望得到的数据集为:
variable
Week 2
\li200 aa
\li200 bb
\li200 ccc

谢谢!

最佳答案

whymath 查看完整内容

试比较以下两段程序: 程序一(原程序,删去了if语句以使得逻辑更为简单): 结果为: 程序二: 结果为: 略加分析,即可知程序一(原程序)中的 output 语句错误的使用逻辑与 set 语句自带的读入新的一行时初始化变量值的特性起了作用,导致 variable 除第一行外全为空值。 建议将原程序修改如下: 第一个 output 语句受到 if 条件约束,将仅执行一次。 第二个 output 语句将 aaa 数据集逐行读入,处理,然后输出 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2022-4-18 22:46:08
试比较以下两段程序:
程序一(原程序,删去了if语句以使得逻辑更为简单):
复制代码
结果为:
1.png
程序二:
复制代码

结果为:
2.png
略加分析,即可知程序一(原程序)中的 output 语句错误的使用逻辑与 set 语句自带的读入新的一行时初始化变量值的特性起了作用,导致 variable 除第一行外全为空值。

建议将原程序修改如下:
复制代码
第一个 output 语句受到 if 条件约束,将仅执行一次。
第二个 output 语句将 aaa 数据集逐行读入,处理,然后输出。

最后,稍加改造,可以实现在一个数据集的任意行前插入一行的通用写法。示例如下:
复制代码

此法的关键,在于理解和掌握数据指针 point= 选项和 output 语句的用法。掌握后,也可推广到在任意指定行前插入任意行,甚至插入一个或多个数据集的情形。
二维码

扫码加我 拉你入群

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

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

2022-4-19 10:11:23
data aaa;
input grpcat$;
cards;
aa
bb
ccc
;
run;
/*Method 1*/
data aaa1;
        length variable $20.;
        if _n_=1 then variable="Week 2";
        output;
        set aaa;
/*        if not missing(grpcat) then variable="\li200 "||grpcat;*/  /*这一步在该数据步并未产生作用,此步数据集的基础是aaa,其中是没有variable变量的,variable变量存在于aaa1数据集中,所以想要衍生新变量要基于aaa1数据集*/
run;

data aaa2;
        set aaa1;
        if not missing(grpcat) then variable="\li200 "||grpcat;
run;
二维码

扫码加我 拉你入群

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

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

2022-4-19 10:13:02
复制代码


二维码

扫码加我 拉你入群

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

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

2022-4-19 20:30:48
试比较以下两段程序:
程序一:
复制代码
输出为: 1.png
程序二:
输出为:

二维码

扫码加我 拉你入群

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

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

2022-4-20 09:18:17
whymath 发表于 2022-4-19 20:51
试比较以下两段程序:
程序一(原程序,删去了if语句以使得逻辑更为简单):
结果为:
厉害了厉害了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群