问题标签 [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 投票
2 回答
242 浏览

sas - SAS 数据步骤 - 在当前数据集中,遍历另一个数据集以获取值

我有 2 个这样的数据集

数据集 1:

数据集 2:

期望的结果是这样的:

我认为解决方案是按每条记录遍历数据集 2,查找数据集 2 日期值并将其与数据集 1 中的范围 From To 进行比较,直到找到匹配项,然后获取 Period 值。我们可以用 SAS 数据步代码而不是 sql 来做到这一点吗?如果我们这样做,性能明智,会更好吗?

提前感谢您的帮助,非常感谢。

0 投票
1 回答
2107 浏览

sas - proc copy 和 data step 性能的区别

考虑两种情况,sales包含超过 10M 的记录,一条记录 50 字节:

情景一:

场景二:

在这两种情况下,是否有理由选择一种方式而不是另一种方式?

0 投票
1 回答
167 浏览

sql - 基于分类变量的相似性匹配观察

我想知道,如果有人有一个很好的方法来匹配基于分类(非序数)变量的两个观察值。我正在进行的练习是根据兴趣和其他特征(非序数或序数)分类变量将学员与导师匹配。

可变 的可能值

运动 “棒球”、“足球”、“篮球”(……)

婚姻状况 “单身,没有孩子”,“单身,年幼的孩子”,“已婚,没有孩子”,“已婚,年幼的孩子”,(...)

工作级别 1、2、3、4、5、6

行业 “零售”、“金融”、“批发”、(……)

如果任何变量对人很重要,也有指标。我理解,我可以将婚姻状况强制转换为一两个序数变量,例如(“单身”、“已婚”、“寡妇”)和(“没有孩子”、“年幼的孩子”、“成年的孩子”)。但我不知道如何处理工业和体育,因为它们没有逻辑顺序。我的计划最初是使用聚类技术,根据最短距离或给定点找到导师和被指导者集之间的匹配。但这会忽略人们可以决定变量对他们是否重要的​​事实(“是”,“否”)。现在,我正在考虑通过使用嵌套的 IF 语句来检查是否存在基于重要性和实际值的完美匹配来对其进行蛮力逻辑。ELSE 检查是否有匹配的记录包含所有匹配项,但只有一个类别等。

创建两个变量,一个用于重要性序列(例如:“YesNoYesNoNo”)和一个用于兴趣(例如“BasketballSingleNokids6Retail”),然后使用模糊匹配是否有意义?

此致,

0 投票
1 回答
175 浏览

sas - 使用 PROC SORT 和 DATA _NULL_ 使用 SAS 生成报告

(注意:这是我有正确答案的家庭作业,但我对结果不满意。)

关于数据的一点背景。记录患者来诊所就诊的四种药物的信息:代码 0 表示未服用药物,代码 1 表示正在开始服用药物,代码 2 表示正在服用药物停产。对于每次就诊,都会记录患者 ID、就诊日期和四种药物的状态代码。

我的目标是只使用PROC SORTDATA _NULL_程序来生成报告。我已经成功PUT地在步骤中使用声明DATA _NULL_创建了使用过所有处方药的个人列表,但是我将如何生成一份显示使用过所有处方药的个人总数的报告?

电流输出

患者 01 服用了 4 种不同的药物
患者 03 服用了 4 种不同的药物
患者 04 服用了 4 种不同的药物

期望的输出

有 3 名患者服用了 4 种不同的药物。

代码

0 投票
2 回答
112 浏览

sas - SAS 任务。需要有条件地选择记录

我有一个任务要解决,我对这种编程语言很陌生。当标志为 0 时,我必须选择下一个直接记录,前提是标志变量具有三个或更多连续记录且值为 1。我已经研究了几个小时。下面是数据步。请建议。

输出将是: -

这是我到目前为止所尝试的。

0 投票
1 回答
47 浏览

report - 指定 SAS 报表的变量顺序

我正在开发一个项目,我需要为自定义 SAS 报告指定数据中对象的顺序。我在一些应该很容易的事情上遇到了麻烦,这是我正在使用的数据的一个例子。

我想要的是...

因此,对于每一次出现的 ord,ord2 = 1,...,n_i。

谢谢您的帮助!

0 投票
1 回答
59 浏览

sas - 在子集 IF 中使用数组变量而不指定数组变量的数量

在 SAS 中,我有几列美元值和其他几列。如果所有美元值的值均为 0,我不关心一行数据,并且我不希望这些行出现在最终数据中。作为美元值的列已经在数组 Fix_Missing 中。我在数据步骤。

因此,例如,我可以这样做:

但是,数组中的变量数量可能会发生变化,我希望代码无论其中有多少变量都可以工作。是否有捷径可寻?

0 投票
2 回答
260 浏览

dataset - SAS 编程 - 数据步骤 - 文本到 SAS 数据集解析问题

我正在尝试从文本文件创建 SAS 数据集。文本文件以如下格式显示数据:

-标题标题标题

-标题标题标题

四月春季赛男

$$$$$$$$$$$$$$$$$$$$

姓名年龄状态/这些是文本文件中的标题/

$$$$$$$$$$$$$$$$$$$$

约翰·史密斯 30 CA

马克·多伊 49 TX

五月 SpringRace2 女

$$$$$$$$$$$$$$$

姓名 年龄 状态

$$$$$$$$$$$$$$$

贝蒂怀特 50 ME

简·史密斯 37 纽约


我在数据步骤中遇到的问题是:绕过不同的标题行,然后在 ****** 标题 ******* 之前收集“事件”数据作为变量,然后跳过标题 和为实际的人分配变量。它在整个巨大的文本文件中都是类似的格式。请问有人能指出我正确的方向吗?

我一直在尝试:Data work.test;infile c:\tester dlm=' , $' 遗漏;输入 /// 月 $15。事件名称 $15。性别 6 美元。(这是我卡住的地方,因为我不知道如何跳过文本文件中的“姓名年龄状态”,而只是将变量分配给“John Smith 30 CA”等)运行;

我还认为必须有更好的方法来传递标题,因为不确定它们总是只有 2 行长。

谢谢

0 投票
1 回答
1527 浏览

sas - 如何将时间 mm:ss.ss 格式读入 sas?

我在读取某一特定数据列时遇到问题。我遇到问题的原始文本文件列如下所示:

55.49
1:23.57
32.22
5:38.43
12:52.17
25.13

形式是分分:秒秒毫秒毫秒。此特定数据不计入小时数。我尝试将变量格式化为 TIME6.2;但我得到了超过 70% 的数据的缺失值。我还搞砸了调整宽度。我也尝试过使用 informat mmss,但没有成功。但是我可能使用不正确。到目前为止,我正在将数据作为字符值读取,但我需要它是一个数值,以便我可以进行数据比较。

任何建议将不胜感激!

谢谢!

编辑:我想说明这些是经过的时间(比赛结果)。我希望读取数据,然后能够比较比赛时间,例如排名第一,第二,第三等。

0 投票
1 回答
59 浏览

sorting - 创建数据集输出......从哪里开始?

数据集中的变量是:Event, EventType, FName, LName, Age, Gender, Score.

我正在尝试创建一个报告,该报告为每个性别每个年龄(18-65 岁)的每个事件/事件类型提供最低 5 分。

例如,我想要参加 EventA EventtypeB 的每个 18 岁女性的最低 5 分,然后我想要所有 19 岁的女性,依此类推。对于每个性别。附注 - 并非所有年龄段都有 5 名参与者。例如,可能没有 20 岁的人参加,可能只有 2 名 21 岁的人。

我最初试图通过为每个年龄制作一组单独的数据集来解决这个问题,但我知道必须有更好的方法来做到这一点。我会很感激任何帮助谢谢我对 SAS 很陌生,但我在各个方面都有介绍经验。

这是一些示例输入:
Mile Sprint John Smith 19 Male 15.31
Mile Sprint Alex Doe 19 Male 13.21
Mile Sprint Ian Sore 19 Male 23.51
Mile Sprint Sean Lae 19 Male 12.34
Mile Sprint Mike Rai 19 Male 17.27
Mile Sprint Connor Te 19 Male 11.23
Mile Sprint Simon Doe 19 Male 15.21
Mile Long Jane Joy 37 Female 35.12
Mile Long Victoria K 37 Female 27.31
Mile Long Chris Li 25 Male 23.43

对于Mile Sprint 19 Males我希望它返回:
Mile Sprint Connor Te 19 Male 11.23
Mile Sprint Sean Lae 19 Male 12.34
Mile Sprint Alex Doe 19 Male 13.21
Mile Sprint Simon Doe 19 Male 15.21
Mile Sprint John Smith 19 Male 15.31

因为Mile Long 37 Female没有 5 个参与者,我希望它只返回这个:
Mile Long Victoria K 37 Female 27.31
Mile Long Jane Joy 37 Female 35.12

使用显示的示例输入,我试图获得Mile Sprint19 岁男性的 5 个最低分数。然后对于 20-65 岁的男性也是如此。然后Mile Long对所有男性都一样。女性反之亦然。假设一场比赛中可能没有 5 名参与者,或者可能有超过 5 名参与者。无论如何要在一个或两个数据集输出中完成所有这些操作吗?