问题标签 [datastep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
128 浏览

sas - 如何用条件创建这个宏?

样本输入数据:
FirstName LastName Group Age LastVenue Position
Jack Smith ULDA 25 TheaterA 1
Jesse James GODL 37 TheaterB 12
Jane Doe ULDA 29 TheaterA 3
Izzy Gord IIPA 41 TheaterC 8
Ann Roswell GODL 30 TheaterB 16
Chelsea Jenk ULDA 19 TheaterA 11

我正在尝试创建:
%macro group_members(group=); proc print data=sample; var Position Age Group FirstName LastName; where group=&group; %mend group_members;

但是我想向它添加条件,所以如果没有输入任何内容,%group_members()那么它将按照上面显示的变量顺序显示所有组。如果在这种情况下输入了一个无效组:%group_members(LOL)那么我希望将一条注释发送到日志%put 'An invalid group was entered'。因此不应该打印任何内容。我正在尝试在更大的数据集上创建一个非常相似的程序。
我感谢任何高级帮助!谢谢 :)

到目前为止,我已经尝试过:
%macro group_members(group=); proc sql; select count(*) into :ct from sample where group="&group" quit; proc print data=sample; %if &group ^= %then %do; where group="&group."; %end; %if &ct = 0 %then %put An Invalid group was entered; %else %do; where group="&group."; %end; run; %mend group_members;

我从每个测试中得到错误..例如%group_members()返回错误:
ERROR: More positional parameters found than defined

0 投票
1 回答
1019 浏览

sas - SAS 数据步编程 - 解释数据集(obs=0)

如果我们在下面的(错误)示例中设置(obs = 0)数据集选项,您能否解释为什么不处理数据步骤语句?

我通常希望 work.wrong 和 work.right 具有相同的输出。

0 投票
2 回答
234 浏览

sas - SAS中的自动分组,最小化组内差异

所以我尝试建立自动分组。目标是选择具有最低方差的分组设置。

换句话说,我想为以下找到 x 和 y,x,y 是自然数,

使得(方差(Response在Group1中),方差(Response在Group2中),方差(Response在Group3中))的总和最小化。

在此处输入图像描述

我的想法是我将有 2 个循环(嵌套)

然后,我将只选择提供 3 个组的方差(组内响应)之和中最小的分组设置。

0 投票
1 回答
63 浏览

loops - 插入可变数量的行

目前,我的宏正在运行以插入恒定数量的行:

我是否能够修改此宏或创建一个新宏来运行它,而不是 39 次,而是用另一个表中的变量替换循环数?

谢谢!

0 投票
3 回答
14314 浏览

sas - Set multiple datasets with similar names in sas

Suppose I have a varying number of datasets in my work environment, but all of which start with a similar name: name_abc, name_efg, name_1ky, etc. The datasets have the same variables and characteristics, and I want to set them all into one dataset.

Is there a way I can do this in SAS without typing all the datasets? I need this to be flexible with the number of datasets available in work environment.

0 投票
1 回答
838 浏览

sas - 如何使用数据步骤而不是 SQL 从数据集列创建宏变量?

我们可以通过 SAS SQL 过程创建宏变量,使用语法

但我想知道数据步骤中是否有相同的方法。

我有一个数据集。

MA我可以使用以下语句创建一个宏变量。

如何在数据步骤中做到这一点?

0 投票
1 回答
75 浏览

sas - SAS:检查文件是否存在后堆叠文件

我正在浏览一堆按日历年和其他变量划分的文件。我想做的是按财政年度对它们进行分区(基于记录中存在的日期变量)。例如,要创建 FY2010 文件,我需要堆叠 CY2009 和 CY2010 文件(我们将这些文件称为 file_2009 和 file_2010)和 FY2010 记录的子集。但是,其中一个或两个文件可能不存在。我想要做的是,如果其中一个文件不存在,那么只需使用另一个文件。如果两者都退出,则同时使用。否则,什么也不做。我想出的方法没有我想要的那么紧凑。关于这样做的最佳方式的任何想法?谢谢。

0 投票
3 回答
107 浏览

sql - 在两个重叠数据集中选择唯一组合

例如,在 SAS 中,我在数据集 A(左下方)中有 5 个 ID。有一个数据集 B,(可能包含一些 A 的 ID,右下方)。我需要在 A 和 B 上找到一个独特的组合(A 是主要结果数据集),性别相同,年龄范围在 5 以内,收入范围在 10000.Tt 内可能有很多 b.id 可以与 a.id 合并。但关键是,我只能使用一次 b.id。在这种情况下,101 与 106 合并,102 与 111,103 合并与 112,105 与 110 合并。抱歉,我很难描述我的问题。希望它足够清楚。谢谢!

结果

0 投票
1 回答
59 浏览

sas - sas - 按账户 ID 滞后?

不确定我是否需要为此使用延迟。但这就是我想做的。

这是我的数据...

这就是我想要结束的...

我的数据集按 acct 和 sort_order 排序。对于每个帐户,我想采用第一种类型(基于 sort_order)并将其复制到该帐户的每一行。例如,acct 111111 将“标准”作为它的第一个类型。我希望 acct 111111 的每个观察都具有“标准”作为它的类型。

我尝试在滞后的情况下执行以下操作,但效果不太好......

0 投票
2 回答
102 浏览

duplicates - by 语句在 sas 数据步骤中真正做了什么?

好的,这似乎是一件非常简单的事情,但我无法解释 sas datastep 中的“by statement”到底在做什么。我知道什么时候需要使用它,但我不确定它在做什么。

在下面的示例中,我了解 first.var 和 last.var 的虚拟 sas 列是什么,当它具有它的值时。by 语句是否在 var initial 和 metal 周围创建了这些虚拟列?那么sas是扫描整个数据集一次呢?

如果我 proc print dups 我希望这样: