我正试图找出如何对这个数据集进行排序。SAS初学者
我该怎么开始呢?? 我有两个数据集 对于您将提供的输出: 它应该是excel或XML格式 每个查询逻辑/编程检查应位于每个选项卡上 列应该是我正试图找出如何对这个数据集进行排序。SAS初学者,sas,Sas,我该怎么开始呢?? 我有两个数据集 对于您将提供的输出: 它应该是excel或XML格式 每个查询逻辑/编程检查应位于每个选项卡上 列应该是 Subject #, Visit Date (You will need the Visit Date Listing also attached) Visit Name (Visit date from the file_34422 must match Visit name in the Blood Pressure File) Date of Ass
Subject #,
Visit Date (You will need the Visit Date Listing also attached)
Visit Name (Visit date from the file_34422 must match Visit name in the Blood Pressure File)
Date of Assessment (From the BP Log), VSBPDT_RAW, VSTPT, BP results.
A column for SYBP1. SYBP2, SYBP3, DIABP1, DIABP2, DIABP3
Findings/query text.
以下是BP的规范:
对于相同的受试者和相同的FOLDERNAME,其中VSTPT是血压1。
- 如果VSBPYN为否,则所有值都必须为null或=0(VSBPDT_RAW、VSBPTM1、SYSBP1、DIABP1、VSBPND2、VSBPTM2、SYSBP2、DIABP2、VSBPND3、VSBPTM3、SYSBP3、DIABP3)
select
f.subject,
f.SVSTDT_RAW, f.FolderName,
b.FolderName,
VSBPDT_RAW, VSTPT,
SYSBP1, SYSBP2, SYSBP3,
DIABP1, DIABP2, DIABP3
FROM first_data as f, bp_data as b
group by subject, foldername
where f.subject = b.subject
having VSTPT is Blood Pressure set 1,
VSBPYN is No;
退出
我只需要被指向正确的方向。我知道这不可能是正确的。我不知道您的数据的确切结构,因此您可能需要修改下面的解决方案以选择正确的列 从描述来看,这似乎是SQL和数据步骤的一个好情况。您有许多列要与
bp
表合并。用SQL中的first\u数据
合并所有这些列将很容易
当您有许多按行条件时,数据步骤将比SQL中的许多CASE
语句更易于使用和读取。我们将采用两阶段方法,使用SQL和数据步骤
步骤1:合并数据
proc sql noprint;
create table stage as
select t1.*
, t2.VSBPYN
from bp_data as t1
INNER JOIN
first_data as t2
ON t1.subject = t2.subject
AND foldername = t2.foldername
where t1.VSTPT = 1
;
quit;
步骤2:有条件地将值设置为缺失
接下来,我们将为条件逻辑执行一个数据步骤call missing()
是一个有用的函数,可以在一条语句中将多个变量的值设置为missing all
data want;
set stage;
if(upcase(VSBPYN) = 'NO') then call missing(VSBPDT_RAW, VSBPTM1, SYSBP1, DIABP1,
VSBPND2, VSBPTM2, SYSBP2, DIABP2,
VSBPND3, VSBPTM3, SYSBP3, DIABP3
);
run;
步骤3:输出到Excel
最后,我们将输出发送到Excel
proc export
data=want
file='/my/location/want.xlsx'
dbms=xlsx
replace;
run;
欢迎来到堆栈溢出!提醒堆栈溢出不是代码编写服务。为了获得回复并确保您的问题不会被解决,请向我们展示您的尝试,并以可下载的.sas7bdat文件、csv文件或
datalines
格式发布一些示例数据。请查看此处有关如何提问的指导原则。通常,一开始,这是我所拥有的,这是我想要的,这是我迄今为止尝试过的一个好主意。谢谢。。。我已经更新了问题…@StuSztukowski关于如何进行这项工作有什么建议吗?谢谢,我将开始这项工作并分享我的结果..对于VSTPT=血压设置1。你为什么用1?运行第一个代码后,我收到一条错误消息error:Expression using equals(=)具有不同数据类型的组件。在您的问题中,它声明:“where VSTPT是血压1”。这将直接转换为where
语句。如果它给出了关于不同数据类型的错误,那么VSTPT是一个字符变量,您需要将其转换为数字或指定VSTPT='1'
。也许这意味着VSTPT字面上等于“血压1”。您没有发布可下载的样本数据或数据结构,所以我不知道您的数据包含什么。我无法在此为您提供更多帮助。我如何共享样本数据??是VSTPT=“血压设置1”。。。有了这个,我就可以做其他的了。。