<?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: Transposing CMS Data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866891#M342376</link>
    <description>&lt;P&gt;Since the MEASURE_ID variable is used to NAME the resulting variables you can use a WHERE on the INPUT to remove them rather than a DROP or KEEP on the OUTPUT.&amp;nbsp; Should make it run faster too.&lt;/P&gt;</description>
    <pubDate>Tue, 28 Mar 2023 23:05:40 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2023-03-28T23:05:40Z</dc:date>
    <item>
      <title>Transposing CMS Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866885#M342371</link>
      <description>&lt;P&gt;I am working with &lt;A href="https://data.cms.gov/provider-data/dataset/77hc-ibv8" target="_self"&gt;CMS data&lt;/A&gt; and trying to convert it so that each facility has only one row, but I'm having a difficult time with one specific aspect.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The original data in formatted like (I removed some unnecessary columns for ease of reading):&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Facility_ID&lt;/TD&gt;&lt;TD&gt;Facility_Name&lt;/TD&gt;&lt;TD&gt;Measure_ID&lt;/TD&gt;&lt;TD&gt;Measure_Name&lt;/TD&gt;&lt;TD&gt;Compared_to_National&lt;/TD&gt;&lt;TD&gt;Score&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;SHANDS JACKSONVILLE&lt;/TD&gt;&lt;TD&gt;HAI_1_CILOWER&lt;/TD&gt;&lt;TD&gt;Central Line Associated Bloodstream Infection (ICU + select Wards): Lower Confidence Limit&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;1.081&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;SHANDS JACKSONVILLE&lt;/TD&gt;&lt;TD&gt;HAI_5_CILOWER&lt;/TD&gt;&lt;TD&gt;MRSA Bacteremia: Lower Confidence Limit&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;1.595&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;SHANDS JACKSONVILLE&lt;/TD&gt;&lt;TD&gt;HAI_1_SIR&lt;/TD&gt;&lt;TD&gt;Central Line Associated Bloodstream Infection (ICU + select Wards)&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;1.62&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Each hospital has about 40 rows with a separate measure in each.&lt;/P&gt;&lt;P&gt;I am trying to get data that looks like below, for all HAI_x_SIR measures.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Facility_ID&lt;/TD&gt;&lt;TD&gt;State&lt;/TD&gt;&lt;TD&gt;HAI_1_SIR&lt;/TD&gt;&lt;TD&gt;Compared_1&lt;/TD&gt;&lt;TD&gt;HAI_2_SIR&lt;/TD&gt;&lt;TD&gt;Compared_2&lt;/TD&gt;&lt;TD&gt;HAI_3_SIR&lt;/TD&gt;&lt;TD&gt;Compared_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.62&lt;/TD&gt;&lt;TD&gt;Better than average&lt;/TD&gt;&lt;TD&gt;0.832&lt;/TD&gt;&lt;TD&gt;Better than average&lt;/TD&gt;&lt;TD&gt;0.904&lt;/TD&gt;&lt;TD&gt;No different than average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100002&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.685&lt;/TD&gt;&lt;TD&gt;Worse than average&lt;/TD&gt;&lt;TD&gt;1.106&lt;/TD&gt;&lt;TD&gt;No different than average&lt;/TD&gt;&lt;TD&gt;1.197&lt;/TD&gt;&lt;TD&gt;Worse than average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;0.495&lt;/TD&gt;&lt;TD&gt;No different than average&lt;/TD&gt;&lt;TD&gt;0.286&lt;/TD&gt;&lt;TD&gt;Better than average&lt;/TD&gt;&lt;TD&gt;0.966&lt;/TD&gt;&lt;TD&gt;Better than average&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;data hai_test;
	set hai;
	if facility_id = . then delete;
	if score="Not Available" then delete;
run;

proc sort data=hai;
    by Facility_ID;
run;

proc print data=work.hai_test (obs=100);
run;

proc transpose data=hai_test out=hai_test_row (keep=facility_id 
		state HAI_1_SIR HAI_2_SIR HAI_3_SIR 
		HAI_4_SIR HAI_5_SIR);
	by facility_ID state;
	var score;
	id measure_id;
run;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With this code, I have been able to get data that looks like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Facility_ID&lt;/TD&gt;&lt;TD&gt;State&lt;/TD&gt;&lt;TD&gt;HAI_1_SIR&lt;/TD&gt;&lt;TD&gt;HAI_2_SIR&lt;/TD&gt;&lt;TD&gt;HAI_3_SIR&lt;/TD&gt;&lt;TD&gt;HAI_4_SIR&lt;/TD&gt;&lt;TD&gt;HAI_5_SIR&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.62&lt;/TD&gt;&lt;TD&gt;0.832&lt;/TD&gt;&lt;TD&gt;0.904&lt;/TD&gt;&lt;TD&gt;0.386&lt;/TD&gt;&lt;TD&gt;2.322&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100002&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.685&lt;/TD&gt;&lt;TD&gt;1.106&lt;/TD&gt;&lt;TD&gt;1.197&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1.433&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;0.495&lt;/TD&gt;&lt;TD&gt;0.286&lt;/TD&gt;&lt;TD&gt;0.966&lt;/TD&gt;&lt;TD&gt;1.514&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.247&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;proc transpose data=hai_test out=hai_test_row (keep=facility_id 
		state HAI_1_SIR HAI_2_SIR HAI_3_SIR 
		HAI_4_SIR HAI_5_SIR);
	by facility_ID state;
	var score compared_to_national;
	id measure_id;
run;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Using this code instead, including compared_to_national, gives the following result:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Facility_ID&lt;/TD&gt;&lt;TD&gt;State&lt;/TD&gt;&lt;TD&gt;HAI_1_SIR&lt;/TD&gt;&lt;TD&gt;HAI_5_SIR&lt;/TD&gt;&lt;TD&gt;HAI_4_SIR&lt;/TD&gt;&lt;TD&gt;HAI_2_SIR&lt;/TD&gt;&lt;TD&gt;HAI_3_SIR&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.62&lt;/TD&gt;&lt;TD&gt;2.322&lt;/TD&gt;&lt;TD&gt;0.386&lt;/TD&gt;&lt;TD&gt;0.832&lt;/TD&gt;&lt;TD&gt;0.904&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100001&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;100002&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;1.685&lt;/TD&gt;&lt;TD&gt;1.433&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1.106&lt;/TD&gt;&lt;TD&gt;1.197&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;100002&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;Worse than the National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;0.495&lt;/TD&gt;&lt;TD&gt;1.247&lt;/TD&gt;&lt;TD&gt;1.514&lt;/TD&gt;&lt;TD&gt;0.286&lt;/TD&gt;&lt;TD&gt;0.966&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;Better than the National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;TD&gt;Better than the National Benchmark&lt;/TD&gt;&lt;TD&gt;No Different than National Benchmark&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Which is obviously still not correct, but I think may be an intermediary step? Or I may be completely off base. I have no idea how to proceed with what I've been able to get so far. I'm thinking an array may be necessary or maybe retain, but I don't even know what to search for to find advice on that for this scenario.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so much!&lt;/P&gt;</description>
      <pubDate>Tue, 28 Mar 2023 22:09:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866885#M342371</guid>
      <dc:creator>bonnie27</dc:creator>
      <dc:date>2023-03-28T22:09:00Z</dc:date>
    </item>
    <item>
      <title>Re: Transposing CMS Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866886#M342372</link>
      <description>&lt;P&gt;So both of your PROC TRANSPOSE steps will create variables with the same names because you are only using the ID statement to name them.&amp;nbsp; If you want the numeric and the character variables to have different names you could add the PREFIX= or SUFFIX= option to the PROC statement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is the purpose of the KEEP= dataset option in your code? Are you just trying to get rid of the _NAME_ variable?&amp;nbsp; It might be easier to use a DROP= option instead.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=hai_test out=hai_test_numbers (drop=_name_);
  by facility_ID state;
  id measure_id;
  var score;
run;
proc transpose data=hai_test suffix=_change out=hai_test_strings(drop=_name_);
  by  facility_ID state;
  id measure_id;
  var compared_to_national;
run;

data want;
  merge hai_test_numbers hai_test_strings;
  by facility_ID state;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 28 Mar 2023 22:38:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866886#M342372</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-03-28T22:38:07Z</dc:date>
    </item>
    <item>
      <title>Re: Transposing CMS Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866889#M342375</link>
      <description>&lt;P&gt;The purpose of KEEP= was to drop the many other measure variables that aren't relevant to my final project (HAI_5_ELIGCASES for example).&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your solution worked though! Thank you so much, you're my hero. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 28 Mar 2023 22:50:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866889#M342375</guid>
      <dc:creator>bonnie27</dc:creator>
      <dc:date>2023-03-28T22:50:37Z</dc:date>
    </item>
    <item>
      <title>Re: Transposing CMS Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866891#M342376</link>
      <description>&lt;P&gt;Since the MEASURE_ID variable is used to NAME the resulting variables you can use a WHERE on the INPUT to remove them rather than a DROP or KEEP on the OUTPUT.&amp;nbsp; Should make it run faster too.&lt;/P&gt;</description>
      <pubDate>Tue, 28 Mar 2023 23:05:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transposing-CMS-Data/m-p/866891#M342376</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-03-28T23:05:40Z</dc:date>
    </item>
  </channel>
</rss>

