我正试图找出如何对这个数据集进行排序。SAS初学者

我正试图找出如何对这个数据集进行排序。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

我该怎么开始呢?? 我有两个数据集

对于您将提供的输出: 它应该是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 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)
这就是我开始做的

proc-sql

    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”。。。有了这个,我就可以做其他的了。。