Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas (每天一次)。我不需要周一到周五的星期。谢谢。你有每个工作日的数据吗(从某个开始日期到某个结束日期)?谢谢你,但我没能让它工作。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于thisdat_Sas - Fatal编程技术网

Sas (每天一次)。我不需要周一到周五的星期。谢谢。你有每个工作日的数据吗(从某个开始日期到某个结束日期)?谢谢你,但我没能让它工作。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于thisdat

Sas (每天一次)。我不需要周一到周五的星期。谢谢。你有每个工作日的数据吗(从某个开始日期到某个结束日期)?谢谢你,但我没能让它工作。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于thisdat,sas,Sas,(每天一次)。我不需要周一到周五的星期。谢谢。你有每个工作日的数据吗(从某个开始日期到某个结束日期)?谢谢你,但我没能让它工作。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于thisdate lt intnx('month',thisdate,0,'BEGIN')+5或thisdate gt intnx('month',thisdate,0,'END')-5,其中ntnx('month',thisdate,0,'beging')



(每天一次)。我不需要周一到周五的星期。谢谢。你有每个工作日的数据吗(从某个开始日期到某个结束日期)?谢谢你,但我没能让它工作。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于
thisdate lt intnx('month',thisdate,0,'BEGIN')+5或thisdate gt intnx('month',thisdate,0,'END')-5
,其中
ntnx('month',thisdate,0,'beging')
(该日期开始前0个月的开始)这个月的第一天对吗?据我所知,从星期六开始的一个月内,这只会在开始时产生3天的时间。谢谢你,但我无法让这项工作正常进行。我试图澄清我原来的问题。为什么使用2015年1月1日?对不起,我不是最好的程序员,这就是我问的原因。你的条件相当于
thisdate lt intnx('month',thisdate,0,'BEGIN')+5或thisdate gt intnx('month',thisdate,0,'END')-5
,其中
ntnx('month',thisdate,0,'beging')
(该日期开始前0个月的开始)这个月的第一天对吗?据我所知,从星期六开始的一个月内,这在开始时只会产生3天。请注意,如果第一个工作日中有一天无意中没有观察到,此解决方案仍然会给您5个工作日的观察时间。这就是你想要的吗?非常感谢你的帮助!有一个答案是,我对解决我问题的代码有了更好的理解。请注意,如果第一个工作日中有一个工作日无意中没有观察结果,此解决方案仍将为您提供5个工作日的观察结果。这就是你想要的吗?非常感谢你的帮助!有一个答案让我更好地理解了代码,解决了我的问题。正如
intnx('weekday',intnx('month',today,0,'B'),0)要在这个答案和我的答案之间做出选择,你确实必须决定如何处理假期(以及观察者不在的日子和什么都没有发生的日子)。正如
intnx('weekday',intnx('month',today,0,'B')),0)要在这个答案和我的答案之间做出选择,您必须确实决定如何处理假期(以及观察员不在的日子和什么都没发生的日子)。谢谢。Intnx函数让我有点困惑。我更了解这个代码。但是,这会选择第一天5次,最后一天5次。这可能是因为我每天有5次以上的观察。如何解决此问题?您可能需要先选择不同的日期。添加了先查找不同日期的步骤。我重试了。代码创建min_day_1 min_day_2等到min_day_5,但为所有数据中的第一个日历日指定相同的日期。过去5天也是这样。它将最后一个日历日分配给所有5个日历日。这修复了它。非常感谢你!非常感谢。Intnx函数让我有点困惑。我更了解这个代码。但是,这会选择第一天5次,最后一天5次。这可能是因为我每天有5次以上的观察。如何解决此问题?您可能需要先选择不同的日期。添加了先查找不同日期的步骤。我重试了。代码创建min_day_1 min_day_2等到min_day_5,但为所有数据中的第一个日历日指定相同的日期。过去5天也是这样。它将最后一个日历日分配给所有5个日历日。这修复了它。非常感谢你!
1 AA  500 B 36.9800 NH 2 1 2008 9:10:21 
2 AA  500 S 36.4500 NN 2 1 2008 9:30:41
3 AA  100 B 36.4700 NH 2 1 2008 9:30:43 
4 AA  100 B 36.4700 NH 2 1 2008 9:30:48 
5 AA  50  S 36.4500 NN 2 1 2008 9:30:49
/****
get some dates to play with
****/
data dates(keep=i thisdate);
offset = input('01Jan2015',DATE9.);
do i=1 to 100;
    thisdate = offset + round(599*ranuni(1)+1); *** within 600 days from offset;
    output;
end;
format thisdate date9.;
run;

/**** 
BTW: intnx('month',thisdate,1)-1 = first day of next month. Deduct 1 to get the last day
                                  of the current month.
     intnx('month',thisdate,0,"BEGINNING") = first day of the current month
****/
proc sql;
create table first5_last5 AS
SELECT
    *
FROM 
    dates /* replace with name of your data set */
WHERE
    /* replace all occurences of 'thisdate' with name of your date variable */
   ( intnx('month',thisdate,1)-5 <= thisdate <= intnx('month',thisdate,1)-1 )
   OR
   ( intnx('month',thisdate,0,"BEGINNING") <= thisdate <= intnx('month',thisdate,0,"BEGINNING")+4 )
ORDER BY
    thisdate;
quit;
Data inData (drop=_:); * froget all variables starting with an underscore*;
    format date yymmdd10. time time8.;

    _instant = datetime(); 
    do _i = 1 to 1E5;
        date = datepart(_instant);
        time = timepart(_instant);
        yy = year(date);
        mm = month(date);
        dd = day(date);         

        *just some more random data*;
        letter = byte(rank('a') +floor(rand('uniform', 0, 26)));

        *select week days*;
        if weekday(date) in (2,3,4,5,6) then output;

        _instant = _instant + 1E5*rand('exponential');
    end;
run;
proc sql;
    create view dayCounts as
    select yy, mm, count(distinct dd) as _countInMonth
    from inData
    group by yy, mm;
quit;
data first_5(drop=_:) last_5(drop=_:);
    merge inData dayCounts;
    by yy mm;
    _newDay = dif(date) ne 0;

    retain _nrInMonth;
    if first.mm then _nrInMonth = 1;
    else if _newDay then _nrInMonth + 1;

    if _nrInMonth le 5 then output first_5;
    if _nrInMonth gt _countInMonth - 5 then output last_5;
run;
first5 = intnx('weekday',intnx('month',today,0,'B'),0) <= today
      <= intnx('weekday',intnx('month',today,0,'B'),4) ;
last5 = intnx('weekday',intnx('month',today,0,'E'),-4) <= today 
     <= intnx('weekday',intnx('month',today,0,'E'),0) ;
proc sort data=HAVE (keep=year month day) nodupkey 
     out=ALLDAYS;
   by year month day;
run;
proc summary data=ALLDAYS nway;
 class year month;
 output out=MIDDLE
   idgroup(min(day) out[5](day)=min_day)
   idgroup(max(day) out[5](day)=max_day)
  / autoname ;
run;
proc transpose data=MIDDLE out=DAYS (rename=(col1=day));
  by year month;
  var min_day: max_day: ;
run;
proc sql ;
  create table WANT as 
    select a.* 
    from HAVE a 
    inner join DAYS b
    on a.year=b.year and a.month=b.month and a.day = b.day
  ;
quit;