很抱歉这个令人困惑的标题。
背景
数据看起来像这样
<div class="row featured-row" ng-controller="FeaturedController">
<div dir-paginate="article in featured | itemsPerPage: pageSize" current-page="currentPage">
<div class="col-md-4 text-center" >
<img src="{{ asset('images/1.jpg') }}" alt="image" class="img-circle">
<h2>@{{ article.title | capitalize }}</h2>
<p> Featured </p>
<p> @{{ article.description }}</p>
<p> @{{ $index }}</p>
</div>
</div>
<div class="text-center">
<dir-pagination-controls
boundary-links="true"
on-page-change="pageChangeHandler(newPageNumber)"
template-url="{{ asset('js/dirPagination.tpl.html') }}">
</dir-pagination-controls>
</div>
区域有几个不同的值。对于每个区域,Area Date Ind LB UB
A 1mar 14 1 20
A 2mar 3 1 20
B 1mar 11 7 22
B 2mar 0 7 22
和LB
在多个日期都是固定的,而UB
则有所不同。 Ind
始终从月份开始到该月的某一天开始。
:定位
我的目标是为每个区域运行一个控制图,以查看Date
是否超出范围Ind
。
但是,如果我只绘制每个区域的原始数据,默认情况下(LB,UB)
不会在该月的最后一天结束(在上一个示例中,该图将从1月3日到3月2日而不是31-Mar。我知道通过在xaxis
中指定xmax
选项,情节将延伸到31-Mar。但这只会扩展xaxis
,xaxis
并且LB
仍然显示从1月3日到2月3日,图表的右侧是空的。
因此,我使用UB
添加一些日期记录。
我做了什么
modify
问题
但这只适用于一个领域。我需要先修改每个区域然后逐个绘制它们。如何才能相对有效地获得低于数据
data have;
modify have;
do i = 0 to intck('day',today(),intnx('month',today(),0,'E'));
Date = today()+i;
call missing(Ind);
output;
end;
stop;
run;
proc sgplot data=have missing;
series ... Ind ...;
series ... LB ...;
series ... UB ...;
run;
或Area Date Ind LB UB
A 1mar 14 1 20
A 2mar 3 1 20
A 3mar . 1 20
....
A 31mar. 1 20
B 1mar 11 7 22
B 2mar 0 7 22
B 3mar . 7 22
....
B 31mar. 7 22
中有其他选项可以解决这个问题吗?
答案 0 :(得分:1)
您可以将proc timeseries
与分组area
一起使用,将其添加到您需要的表单中。 end=
选项可让您指定数据的结束日期。看起来您正在使用当前月份,因此我们将使用您的intnx
函数并将其放入一组解析为日期文字的宏函数(大多数ETS过程需要日期文字)出于某种原因)。
我们将使用两个var
语句:一个用于ind
,其中我们用.
填充未观察到的值,另一个用LB
&amp; UB
使用之前的有效值设置未观察到的值。
请注意,我们假设您已将date
置于SAS日期。在运行以下代码之前,请确保先执行此操作。
proc timeseries data=have
out=want;
by area;
id Date interval=day notsorted
accumulate=none
end="%sysfunc(intnx(month, %sysfunc(today() ), 0, E), date9.)"d;
var Ind / setmissing=missing;
var LB UB / setmissing=previous;
run;
您的最终数据集看起来与您一样。