标签: sas

SAS 将 intnx 的“中间”参数设置为始终设置为第 15 个

我有以下 SAS 代码:

DATA _NULL_;
today = today();
    if day(today) ge 1 and day(today) le 15 then do;
        date2=put(intnx('month',today,-1,'m'), date11.);
        date1=put(intnx('month',today,-1,'E'), date11.);
    end;
    if day(today) > 15 then do;
        date2=put(intnx('month',today,0,'B'), date11.);
        date1=put(intnx('month',today,0,'m'), date11.); 
    end;
    call symput('dt',date1);
    call symput('dt2',date2);
RUN;
Run Code Online (Sandbox Code Playgroud)

上面的代码表示,如果今天的日期部分小于或等于 15,则将 date2 设置为上个月中旬,将 date1 设置为上个月的最后/月底。否则,将 date2 设置为当月月初,将 date1 设置为当月中旬。

我喜欢 SAS 使用“m”或“middle”来获取该月的中间日期。它非常适合有 30 天且中间日期为 15 日的月份。但对于有 31 天的月份,它总是在 16 日,二月是特例。我希望始终将中间放在 15 号。

我尝试在每一行添加“-1”以检查它是否能给我所需的内容,但当我调用该变量时它返回一个空白日期。对于不工作的日期调用,它返回一个点 -1。

其中之一是%put &rpt_dt. &rpt_dt2.; . 01-JAN-2023

由于 1 月有 31 天,如果我这样设置 -1:

date1=put(intnx('month',today,0,'m')-1, date11.); 
Run Code Online (Sandbox Code Playgroud)

我会得到想要的 1 …

date sas macro-variable

0
推荐指数
1
解决办法
203
查看次数

sas中如何将多行数据折叠成一行

我很难处理重复的观察结果。目前,我有这个输出:

不正确的输出

但是,我需要这个输出(如下),以便我可以获得准确的年终计数。

正确输出

有人可以帮助我创建代码来折叠这些行而不丢失数据。提前致谢。

macros sas duplicates

0
推荐指数
1
解决办法
77
查看次数

如何访问 SAS 用户定义函数中的表值?

我正在创建一个函数来返回 SAS EG 中的每月工作日编号。我可以使用 weekday() 找到周末,但我还需要考虑银行假日。我们有一个银行假期表,我尝试了几种方法来使该函数能够读取银行假期表并返回当月已经过去的银行假期数。

本质上,我需要一种从函数内执行 SQL 并从 SQL Select 语句返回 2 个值的方法。我有使用 Select into 的 SQL,它可以工作。如何将这些值返回到函数中的代码中?

sql sas

0
推荐指数
1
解决办法
81
查看次数

如何在没有SAS的情况下将SAS7BDAT数据库导入Stata

有没有办法在SAS7BDAT没有SAS的情况下将文件导入Stata? usesas需要SAS.

sas stata

-1
推荐指数
1
解决办法
7448
查看次数

SAS - 排除前几行

我有一组数据如下.我需要排除基于MODEL的'计数<100'的第一行.一旦计数> 100,无论计数> 100还是<100,都将保留以下行.

|Make |Model   |SoldMonth|Counts|
|ford |class_c |Jan_2015 |80    |
|ford |class_c |Feb_2015 |90    |
|ford |class_c |Mar_2015 |70    |
|ford |class_c |Apr_2015 |120   |
|ford |class_c |May_2015 |130   |
|ford |class_c |Jun_2015 |50    |
|ford |class_c |Jul_2015 |70    |
|ford |class_c |Aug_2015 |140   |
|ford |class_c |Sep_2015 |110   |   
|ford |Maxi    |Jan_2015 |20    |
|ford |Maxi    |Feb_2015 |50    |  
|ford |Maxi    |Mar_2015 |80    |
|ford |Maxi    |Apr_2015 |120   |    
|ford |Maxi    |May_2015 |130   |
|ford |Maxi    |Jun_2015 |110 …
Run Code Online (Sandbox Code Playgroud)

sas

-1
推荐指数
1
解决办法
73
查看次数

向后选择第一个非负数SAS

我有一个类似于下面的数据集:

ID  COL70  COL71 COL72 COL73 COL74
1     4      3     2    -998   .
2     2      0     2      1   -998
3     1     -998  -998    .    .
4     3      4    -998  -998  -998
Run Code Online (Sandbox Code Playgroud)

我想要做的是让一个新列让我们称之为NEWCOL,它具有从COL74向后看的第一个非负值,所以它看起来如下:

ID  COL70  COL71 COL72 COL73 COL74  NEWCOL
1     4      3     2    -998   .      2 
2     2      0     2      1   -998    1 
3     1     -998  -998    .    .      1
4     3      4    -998  -998  -998    4
Run Code Online (Sandbox Code Playgroud)

我在WPS工作,所以这需要在SAS或PROC SQL中.

arrays sas do-loops

-1
推荐指数
1
解决办法
72
查看次数

在 Scala 中转换 SAS 日期

我有一个文本文件,其中包含 SAS 日期格式日期。现在,我需要使用 Scala 将此文件加载到 Hive 中的表中。

SAS 日期:21558 预期输出:2019-01-09

你能帮我用正确的命令来获得这个输出吗

scala date sas

-4
推荐指数
1
解决办法
55
查看次数

标签 统计

sas ×7

date ×2

arrays ×1

do-loops ×1

duplicates ×1

macro-variable ×1

macros ×1

scala ×1

sql ×1

stata ×1