<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: PROC EXPAND daily to weekly aggregation with missing values in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212203#M52415</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Xia for your answer. It doesn't quite give me what I was looking for, but I get the idea. I had to add a few things to make it get the correct answer. See below. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the meantime I found out how to do it using PROC EXPAND. I add this in reply to my own question. I changed the data slightly to make it give the same output as the code below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds_daily;&lt;/P&gt;&lt;P&gt;input id $ date value weight;&lt;/P&gt;&lt;P&gt;format date weekdatx17.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;A 2 1 1&lt;/P&gt;&lt;P&gt;A 3 2 1&lt;/P&gt;&lt;P&gt;A 4 3 1&lt;/P&gt;&lt;P&gt;A 5 4 1&lt;/P&gt;&lt;P&gt;A 6 5 1&lt;/P&gt;&lt;P&gt;A 7 6 1&lt;/P&gt;&lt;P&gt;A 8 . .&lt;/P&gt;&lt;P&gt;A 9 . .&lt;/P&gt;&lt;P&gt;A 10 2 1&lt;/P&gt;&lt;P&gt;A 11 3 1&lt;/P&gt;&lt;P&gt;A 12 4 1&lt;/P&gt;&lt;P&gt;A 13 5 2&lt;/P&gt;&lt;P&gt;A 14 6 2&lt;/P&gt;&lt;P&gt;A 15 . .&lt;/P&gt;&lt;P&gt;A 16 . .&lt;/P&gt;&lt;P&gt;B 2 1 1&lt;/P&gt;&lt;P&gt;B 3 1 1&lt;/P&gt;&lt;P&gt;B 4 1 1&lt;/P&gt;&lt;P&gt;B 5 2 1&lt;/P&gt;&lt;P&gt;B 6 2 1&lt;/P&gt;&lt;P&gt;B 7 4 1&lt;/P&gt;&lt;P&gt;B 8 . .&lt;/P&gt;&lt;P&gt;B 9 . .&lt;/P&gt;&lt;P&gt;B 10 1 1&lt;/P&gt;&lt;P&gt;B 11 1 1&lt;/P&gt;&lt;P&gt;B 12 2 1&lt;/P&gt;&lt;P&gt;B 13 2 2&lt;/P&gt;&lt;P&gt;B 14 4 2&lt;/P&gt;&lt;P&gt;B 15 . .&lt;/P&gt;&lt;P&gt;B 16 . .&lt;/P&gt;&lt;P&gt;; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_a; set ds_daily; by id; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.id then week=0; if weekday(date)=1 then week+1; run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc summary data=xia_a;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id week; var value; weight weight;&lt;/P&gt;&lt;P&gt;&amp;nbsp; output out=xia_b mean=avg_value; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_c; set xia_a; if weekday(date) ne 7 then delete; run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_d (keep=id date avg_value); &lt;/P&gt;&lt;P&gt;&amp;nbsp; merge xia_c xia_b; by id week; if date=. then delete; run; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 28 Mar 2015 11:29:41 GMT</pubDate>
    <dc:creator>iank131</dc:creator>
    <dc:date>2015-03-28T11:29:41Z</dc:date>
    <item>
      <title>PROC EXPAND daily to weekly aggregation with missing values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212201#M52413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;I have daily data with missing values. I want to aggregate to weekly observations by taking the straight average &lt;/SPAN&gt;of available values (not counting missing) in the week before the end of the week. I also want to get a weighted average of the available values. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the sample code that I am trying, but I can't get the result I want. I realize that the weighted average is not in my code, but I can't even get it to do the straight average. I can't understand the results I get. I even try to transform the missing values into zeros, but still I can't understand what I am getting. luesCould you please help. Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ian.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds_daily; &lt;/P&gt;&lt;P&gt;input id $ date value weight; &lt;/P&gt;&lt;P&gt;format date weekdatx17.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;A 3 2 1&lt;/P&gt;&lt;P&gt;A 4 3 1&lt;/P&gt;&lt;P&gt;A 5 4 1&lt;/P&gt;&lt;P&gt;A 6 5 1&lt;/P&gt;&lt;P&gt;A 7 6 1&lt;/P&gt;&lt;P&gt;A 8 . .&lt;/P&gt;&lt;P&gt;A 9 . .&lt;/P&gt;&lt;P&gt;A 10 2 1&lt;/P&gt;&lt;P&gt;A 11 3 1&lt;/P&gt;&lt;P&gt;A 12 4 1&lt;/P&gt;&lt;P&gt;A 13 5 2&lt;/P&gt;&lt;P&gt;A 14 6 2&lt;/P&gt;&lt;P&gt;A 15 . .&lt;/P&gt;&lt;P&gt;A 16 . .&lt;/P&gt;&lt;P&gt;B 3 1 1&lt;/P&gt;&lt;P&gt;B 4 1 1&lt;/P&gt;&lt;P&gt;B 5 2 1&lt;/P&gt;&lt;P&gt;B 6 2 1&lt;/P&gt;&lt;P&gt;B 7 4 1&lt;/P&gt;&lt;P&gt;B 8 . .&lt;/P&gt;&lt;P&gt;B 9 . .&lt;/P&gt;&lt;P&gt;B 10 1 1&lt;/P&gt;&lt;P&gt;B 11 1 1&lt;/P&gt;&lt;P&gt;B 12 2 1&lt;/P&gt;&lt;P&gt;B 13 2 2&lt;/P&gt;&lt;P&gt;B 14 4 2&lt;/P&gt;&lt;P&gt;B 15 . .&lt;/P&gt;&lt;P&gt;B 16 . .&lt;/P&gt;&lt;P&gt;; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc expand data=ds_daily out=ds_weekly from=day to=week align=end; &lt;/P&gt;&lt;P&gt;&amp;nbsp; convert value = w_value / transformin=( setmiss 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp; id date; by id; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Want&lt;/P&gt;&lt;P&gt;id date w_value&lt;/P&gt;&lt;P&gt;A 8 4&lt;/P&gt;&lt;P&gt;A 15 5.57&lt;/P&gt;&lt;P&gt;B 8 2&lt;/P&gt;&lt;P&gt;B 15 2.29&lt;/P&gt;&lt;P&gt;*/ &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Mar 2015 06:26:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212201#M52413</guid>
      <dc:creator>iank131</dc:creator>
      <dc:date>2015-03-28T06:26:26Z</dc:date>
    </item>
    <item>
      <title>Re: PROC EXPAND daily to weekly aggregation with missing values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212202#M52414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not sure if the following is what you need.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds_daily;&lt;/P&gt;&lt;P&gt;input id $ date value weight;&lt;/P&gt;&lt;P&gt;if weekday(date)=2 then week+1;&lt;/P&gt;&lt;P&gt;format date weekdatx17.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;A 3 2 1&lt;/P&gt;&lt;P&gt;A 4 3 1&lt;/P&gt;&lt;P&gt;A 5 4 1&lt;/P&gt;&lt;P&gt;A 6 5 1&lt;/P&gt;&lt;P&gt;A 7 6 1&lt;/P&gt;&lt;P&gt;A 8 . .&lt;/P&gt;&lt;P&gt;A 9 . .&lt;/P&gt;&lt;P&gt;A 10 2 1&lt;/P&gt;&lt;P&gt;A 11 3 1&lt;/P&gt;&lt;P&gt;A 12 4 1&lt;/P&gt;&lt;P&gt;A 13 5 2&lt;/P&gt;&lt;P&gt;A 14 6 2&lt;/P&gt;&lt;P&gt;A 15 . .&lt;/P&gt;&lt;P&gt;A 16 . .&lt;/P&gt;&lt;P&gt;B 3 1 1&lt;/P&gt;&lt;P&gt;B 4 1 1&lt;/P&gt;&lt;P&gt;B 5 2 1&lt;/P&gt;&lt;P&gt;B 6 2 1&lt;/P&gt;&lt;P&gt;B 7 4 1&lt;/P&gt;&lt;P&gt;B 8 . .&lt;/P&gt;&lt;P&gt;B 9 . .&lt;/P&gt;&lt;P&gt;B 10 1 1&lt;/P&gt;&lt;P&gt;B 11 1 1&lt;/P&gt;&lt;P&gt;B 12 2 1&lt;/P&gt;&lt;P&gt;B 13 2 2&lt;/P&gt;&lt;P&gt;B 14 4 2&lt;/P&gt;&lt;P&gt;B 15 . .&lt;/P&gt;&lt;P&gt;B 16 . .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc summary data=ds_daily;&lt;/P&gt;&lt;P&gt;by week;&lt;/P&gt;&lt;P&gt;var value;&lt;/P&gt;&lt;P&gt;weight weight;&lt;/P&gt;&lt;P&gt;output out=w mean=avg_value;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Mar 2015 09:47:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212202#M52414</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-03-28T09:47:09Z</dc:date>
    </item>
    <item>
      <title>Re: PROC EXPAND daily to weekly aggregation with missing values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212203#M52415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Xia for your answer. It doesn't quite give me what I was looking for, but I get the idea. I had to add a few things to make it get the correct answer. See below. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the meantime I found out how to do it using PROC EXPAND. I add this in reply to my own question. I changed the data slightly to make it give the same output as the code below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds_daily;&lt;/P&gt;&lt;P&gt;input id $ date value weight;&lt;/P&gt;&lt;P&gt;format date weekdatx17.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;A 2 1 1&lt;/P&gt;&lt;P&gt;A 3 2 1&lt;/P&gt;&lt;P&gt;A 4 3 1&lt;/P&gt;&lt;P&gt;A 5 4 1&lt;/P&gt;&lt;P&gt;A 6 5 1&lt;/P&gt;&lt;P&gt;A 7 6 1&lt;/P&gt;&lt;P&gt;A 8 . .&lt;/P&gt;&lt;P&gt;A 9 . .&lt;/P&gt;&lt;P&gt;A 10 2 1&lt;/P&gt;&lt;P&gt;A 11 3 1&lt;/P&gt;&lt;P&gt;A 12 4 1&lt;/P&gt;&lt;P&gt;A 13 5 2&lt;/P&gt;&lt;P&gt;A 14 6 2&lt;/P&gt;&lt;P&gt;A 15 . .&lt;/P&gt;&lt;P&gt;A 16 . .&lt;/P&gt;&lt;P&gt;B 2 1 1&lt;/P&gt;&lt;P&gt;B 3 1 1&lt;/P&gt;&lt;P&gt;B 4 1 1&lt;/P&gt;&lt;P&gt;B 5 2 1&lt;/P&gt;&lt;P&gt;B 6 2 1&lt;/P&gt;&lt;P&gt;B 7 4 1&lt;/P&gt;&lt;P&gt;B 8 . .&lt;/P&gt;&lt;P&gt;B 9 . .&lt;/P&gt;&lt;P&gt;B 10 1 1&lt;/P&gt;&lt;P&gt;B 11 1 1&lt;/P&gt;&lt;P&gt;B 12 2 1&lt;/P&gt;&lt;P&gt;B 13 2 2&lt;/P&gt;&lt;P&gt;B 14 4 2&lt;/P&gt;&lt;P&gt;B 15 . .&lt;/P&gt;&lt;P&gt;B 16 . .&lt;/P&gt;&lt;P&gt;; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_a; set ds_daily; by id; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.id then week=0; if weekday(date)=1 then week+1; run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc summary data=xia_a;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id week; var value; weight weight;&lt;/P&gt;&lt;P&gt;&amp;nbsp; output out=xia_b mean=avg_value; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_c; set xia_a; if weekday(date) ne 7 then delete; run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data xia_d (keep=id date avg_value); &lt;/P&gt;&lt;P&gt;&amp;nbsp; merge xia_c xia_b; by id week; if date=. then delete; run; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Mar 2015 11:29:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212203#M52415</guid>
      <dc:creator>iank131</dc:creator>
      <dc:date>2015-03-28T11:29:41Z</dc:date>
    </item>
    <item>
      <title>Re: PROC EXPAND daily to weekly aggregation with missing values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212204#M52416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found an answer to my own question in SAS GLOBAL FORUM 2011, Paper 417-2011, Expanding PROC EXPAND. :smileylaugh: Here is the full code including the data and the PROC EXPAND code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds_daily;&lt;/P&gt;&lt;P&gt;input id $ date value weight;&lt;/P&gt;&lt;P&gt;format date weekdatx17.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;A 2 1 1&lt;/P&gt;&lt;P&gt;A 3 2 1&lt;/P&gt;&lt;P&gt;A 4 3 1&lt;/P&gt;&lt;P&gt;A 5 4 1&lt;/P&gt;&lt;P&gt;A 6 5 1&lt;/P&gt;&lt;P&gt;A 7 6 1&lt;/P&gt;&lt;P&gt;A 8 . .&lt;/P&gt;&lt;P&gt;A 9 . .&lt;/P&gt;&lt;P&gt;A 10 2 1&lt;/P&gt;&lt;P&gt;A 11 3 1&lt;/P&gt;&lt;P&gt;A 12 4 1&lt;/P&gt;&lt;P&gt;A 13 5 2&lt;/P&gt;&lt;P&gt;A 14 6 2&lt;/P&gt;&lt;P&gt;A 15 . .&lt;/P&gt;&lt;P&gt;A 16 . .&lt;/P&gt;&lt;P&gt;B 2 1 1&lt;/P&gt;&lt;P&gt;B 3 1 1&lt;/P&gt;&lt;P&gt;B 4 1 1&lt;/P&gt;&lt;P&gt;B 5 2 1&lt;/P&gt;&lt;P&gt;B 6 2 1&lt;/P&gt;&lt;P&gt;B 7 4 1&lt;/P&gt;&lt;P&gt;B 8 . .&lt;/P&gt;&lt;P&gt;B 9 . .&lt;/P&gt;&lt;P&gt;B 10 1 1&lt;/P&gt;&lt;P&gt;B 11 1 1&lt;/P&gt;&lt;P&gt;B 12 2 1&lt;/P&gt;&lt;P&gt;B 13 2 2&lt;/P&gt;&lt;P&gt;B 14 4 2&lt;/P&gt;&lt;P&gt;B 15 . .&lt;/P&gt;&lt;P&gt;B 16 . .&lt;/P&gt;&lt;P&gt;; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data value_a; set ds_daily; product = value*weight; run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc expand data=value_a out=value_b from=day to=week align=end; &lt;/P&gt;&lt;P&gt;&amp;nbsp; convert product = total_product / method=aggregate observed=total transformin=(setmiss 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp; convert weight&amp;nbsp; = total_wght / method=aggregate observed=total transformin=(setmiss 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp; id date; by id; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data value_c (drop=total_product total_wght); set value_b; w_value=total_product/total_wght; run; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Mar 2015 11:34:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-EXPAND-daily-to-weekly-aggregation-with-missing-values/m-p/212204#M52416</guid>
      <dc:creator>iank131</dc:creator>
      <dc:date>2015-03-28T11:34:14Z</dc:date>
    </item>
  </channel>
</rss>

