<?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 mapping dataset using multiple columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549173#M152358</link>
    <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset that needs to be mapped based on the granularity of the available data. Some records have higher granularity than others. Currently I use excel to solve my problem using nested IF function but it is both tedious and time consuming.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The mapping file looks like the below table ( Sample mapping). The original mapping file has more records.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I did in excel, first I get a mapping key by concatenating the different columns. This key is then used to lookup and get the BSmap column. Example, for records in the dataset that has Product L5=SF,GL_Product=400 then the mapping picks BSMap=Reverse but if Product L5=SF without values for other columns It maps BSMap=OtherStrucFin.&amp;nbsp; Now I want to repeat this mapping in SAS but do not want to use IF-else statement.&amp;nbsp; Can someone please help me figure out a different approach to get this done in SAS? I use SAS 9.3&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Product L5&lt;/TD&gt;&lt;TD&gt;Product L6&lt;/TD&gt;&lt;TD&gt;Segment&lt;/TD&gt;&lt;TD&gt;Account L6&lt;/TD&gt;&lt;TD&gt;GL_Product&lt;/TD&gt;&lt;TD&gt;GL_Acc&lt;/TD&gt;&lt;TD&gt;Mapping Key&lt;/TD&gt;&lt;TD&gt;BSMap&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Banca&lt;/TD&gt;&lt;TD&gt;OtherWM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CMP&lt;/TD&gt;&lt;TD&gt;CashManagement&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;LSS CF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFLSS CF&lt;/TD&gt;&lt;TD&gt;LeveragedFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PEF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFPEF&lt;/TD&gt;&lt;TD&gt;Project&amp;amp;ExportFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSF&lt;/TD&gt;&lt;TD&gt;OtherStrucFin&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;Aviation&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSFAviation&lt;/TD&gt;&lt;TD&gt;AviationFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;FI&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSyndicationsSyndicationsFI&lt;/TD&gt;&lt;TD&gt;SyndicationsNon-CFFI&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;FI&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8888845&lt;/TD&gt;&lt;TD&gt;CFSyndicationsSyndicationsFI8888845&lt;/TD&gt;&lt;TD&gt;Repo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSF400&lt;/TD&gt;&lt;TD&gt;Reverse&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PEF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Loans&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;PEFLoans&lt;/TD&gt;&lt;TD&gt;Loan&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Mon, 08 Apr 2019 04:50:18 GMT</pubDate>
    <dc:creator>Din4</dc:creator>
    <dc:date>2019-04-08T04:50:18Z</dc:date>
    <item>
      <title>mapping dataset using multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549173#M152358</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset that needs to be mapped based on the granularity of the available data. Some records have higher granularity than others. Currently I use excel to solve my problem using nested IF function but it is both tedious and time consuming.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The mapping file looks like the below table ( Sample mapping). The original mapping file has more records.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I did in excel, first I get a mapping key by concatenating the different columns. This key is then used to lookup and get the BSmap column. Example, for records in the dataset that has Product L5=SF,GL_Product=400 then the mapping picks BSMap=Reverse but if Product L5=SF without values for other columns It maps BSMap=OtherStrucFin.&amp;nbsp; Now I want to repeat this mapping in SAS but do not want to use IF-else statement.&amp;nbsp; Can someone please help me figure out a different approach to get this done in SAS? I use SAS 9.3&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Product L5&lt;/TD&gt;&lt;TD&gt;Product L6&lt;/TD&gt;&lt;TD&gt;Segment&lt;/TD&gt;&lt;TD&gt;Account L6&lt;/TD&gt;&lt;TD&gt;GL_Product&lt;/TD&gt;&lt;TD&gt;GL_Acc&lt;/TD&gt;&lt;TD&gt;Mapping Key&lt;/TD&gt;&lt;TD&gt;BSMap&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Banca&lt;/TD&gt;&lt;TD&gt;OtherWM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CMP&lt;/TD&gt;&lt;TD&gt;CashManagement&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;LSS CF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFLSS CF&lt;/TD&gt;&lt;TD&gt;LeveragedFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PEF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFPEF&lt;/TD&gt;&lt;TD&gt;Project&amp;amp;ExportFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSF&lt;/TD&gt;&lt;TD&gt;OtherStrucFin&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;Aviation&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSFAviation&lt;/TD&gt;&lt;TD&gt;AviationFinance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;FI&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSyndicationsSyndicationsFI&lt;/TD&gt;&lt;TD&gt;SyndicationsNon-CFFI&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;Syndications&lt;/TD&gt;&lt;TD&gt;FI&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8888845&lt;/TD&gt;&lt;TD&gt;CFSyndicationsSyndicationsFI8888845&lt;/TD&gt;&lt;TD&gt;Repo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;CFSF400&lt;/TD&gt;&lt;TD&gt;Reverse&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PEF&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Loans&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;PEFLoans&lt;/TD&gt;&lt;TD&gt;Loan&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 08 Apr 2019 04:50:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549173#M152358</guid>
      <dc:creator>Din4</dc:creator>
      <dc:date>2019-04-08T04:50:18Z</dc:date>
    </item>
    <item>
      <title>Re: mapping dataset using multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549175#M152360</link>
      <description>&lt;P&gt;I cannot figure out what you mean by "map" or "&lt;SPAN&gt;granularity of the available data&lt;/SPAN&gt;".&lt;/P&gt;
&lt;P&gt;Can you explain using different words?&lt;/P&gt;
&lt;P&gt;Example input data and what output you expect would help a lot.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 05:02:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549175#M152360</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-04-08T05:02:05Z</dc:date>
    </item>
    <item>
      <title>Re: mapping dataset using multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549182#M152364</link>
      <description>&lt;P&gt;Hi Tom,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let me try to use the following example, below are two lines of record from my dataset (DATA1)&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Business Unit ID&lt;/TD&gt;&lt;TD&gt;Currency&lt;/TD&gt;&lt;TD&gt;PCS Product L04 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L06 DESC&lt;/TD&gt;&lt;TD&gt;PCS Customer Segment L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Account L06 DESC&lt;/TD&gt;&lt;TD&gt;Prod No&lt;/TD&gt;&lt;TD&gt;Account_Number&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;NGN&lt;/TD&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Other Banking&lt;/TD&gt;&lt;TD&gt;BS Treasury Bills&lt;/TD&gt;&lt;TD&gt;738&lt;/TD&gt;&lt;TD&gt;115120&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;NGN&lt;/TD&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Other Banking&lt;/TD&gt;&lt;TD&gt;BS Due from Other Banks&lt;/TD&gt;&lt;TD&gt;761&lt;/TD&gt;&lt;TD&gt;122001&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Below is another dataset (mapping file).&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;PCS Product L04 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L06 DESC&lt;/TD&gt;&lt;TD&gt;PCS Customer Segment L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Account L06 DESC&lt;/TD&gt;&lt;TD&gt;Product_Number&lt;/TD&gt;&lt;TD&gt;Account_Number&lt;/TD&gt;&lt;TD&gt;Mapping Key&lt;/TD&gt;&lt;TD&gt;BSMap&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;TMNostros&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;624&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - Inp624&lt;/TD&gt;&lt;TD&gt;TMLevel1Securities&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;738&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - Inp738&lt;/TD&gt;&lt;TD&gt;TMLevel1Securities&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;761X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - Inp761X&lt;/TD&gt;&lt;TD&gt;TMNostros&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;122051&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - Inp122051&lt;/TD&gt;&lt;TD&gt;TMNostros&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;BS Due from Other Banks&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - InpBS Due from Other Banks&lt;/TD&gt;&lt;TD&gt;TMNostros&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;BS Inv Sec - Debt Sec NGrp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - InpBS Inv Sec - Debt Sec NGrp&lt;/TD&gt;&lt;TD&gt;TMLevel1Securities&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;BS Treasury Bills&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Treasury MarketsTreasury Mkts - InpBS Treasury Bills&lt;/TD&gt;&lt;TD&gt;TMLevel1Securities&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I am trying to do is combine the two datasets such that my output looks like the following table. I need the last column from mapping table to be part of my DATA1.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Business Unit ID&lt;/TD&gt;&lt;TD&gt;Currency&lt;/TD&gt;&lt;TD&gt;PCS Product L04 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Product L06 DESC&lt;/TD&gt;&lt;TD&gt;PCS Customer Segment L05 DESC&lt;/TD&gt;&lt;TD&gt;PCS Account L06 DESC&lt;/TD&gt;&lt;TD&gt;Prod No&lt;/TD&gt;&lt;TD&gt;Account_Number&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993300"&gt;RRR NGA Map&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;NGN&lt;/TD&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Other Banking&lt;/TD&gt;&lt;TD&gt;BS Treasury Bills&lt;/TD&gt;&lt;TD&gt;738&lt;/TD&gt;&lt;TD&gt;115120&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993300"&gt;TMLevel1Securities&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;NGN&lt;/TD&gt;&lt;TD&gt;Treasury Markets&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Treasury Mkts - Inp&lt;/TD&gt;&lt;TD&gt;Other Banking&lt;/TD&gt;&lt;TD&gt;BS Due from Other Banks&lt;/TD&gt;&lt;TD&gt;761&lt;/TD&gt;&lt;TD&gt;122001&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993300"&gt;TMNostros&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are records in the dataset that have data only for column "PCS PRODUCT L04 DESC", so the expectation is for them to be tagged as "TM Nostros" , but for records that have more information i.e data for other columns, they need to be tagged according to the different levels shown in mapping table.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Not sure if I have explained the problem properly, please let me know if it is unclear.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 05:56:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549182#M152364</guid>
      <dc:creator>Din4</dc:creator>
      <dc:date>2019-04-08T05:56:12Z</dc:date>
    </item>
    <item>
      <title>Re: mapping dataset using multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549187#M152365</link>
      <description>&lt;P&gt;Do the records in the "mapping" table have an order of precedence?&lt;/P&gt;
&lt;P&gt;Assuming that they are ordered from least specific to most specific then something like this might work.&lt;/P&gt;
&lt;P&gt;First convert your printouts into datasets.&lt;/P&gt;
&lt;P&gt;I will add a ROW variable to data table to have a unique identifier.&lt;/P&gt;
&lt;P&gt;I will add an LROW variable to the mapping table as a unique identifier and also to use to find the "best" match.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;
  infile cards dsd dlm='|' truncover;
  length row BU 8 Currency $5 Prod_No Account_Number PL4-PL6 PC5-PC6 $40 ;
  input BU Currency PL4-PL6 PC5-PC6 Prod_no Account_Number;
  row+1;
cards;
8|NGN|Treasury Markets|Treasury Mkts - Inp|Treasury Mkts - Inp|Other Banking|BS Treasury Bills|738|115120
8|NGN|Treasury Markets|Treasury Mkts - Inp|Treasury Mkts - Inp|Other Banking|BS Due from Other Banks|761|122001
;

data lookup ;
  infile cards dsd dlm='|' truncover;
  length lrow 8 Mapping_Key $100 BSMap $40 Prod_No Account_Number PL4-PL6 PC5-PC6 $40 ;
  input PL4-PL6 PC5-PC6 Prod_no Account_Number Mapping_Key BSMap;
  lrow+1;
cards;
Treasury Markets| | | | | | |Treasury Markets|TMNostros
Treasury Markets|Treasury Mkts - Inp| | | |624| |Treasury MarketsTreasury Mkts - Inp624|TMLevel1Securities
Treasury Markets|Treasury Mkts - Inp| | | |738| |Treasury MarketsTreasury Mkts - Inp738|TMLevel1Securities
Treasury Markets|Treasury Mkts - Inp| | | |761X| |Treasury MarketsTreasury Mkts - Inp761X|TMNostros
Treasury Markets|Treasury Mkts - Inp| | | | |122051|Treasury MarketsTreasury Mkts - Inp122051|TMNostros
Treasury Markets|Treasury Mkts - Inp| | |BS Due from Other Banks| | |Treasury MarketsTreasury Mkts - InpBS Due from Other Banks|TMNostros
Treasury Markets|Treasury Mkts - Inp| | |BS Inv Sec - Debt Sec NGrp| | |Treasury MarketsTreasury Mkts - InpBS Inv Sec - Debt Sec NGrp|TMLevel1Securities
Treasury Markets|Treasury Mkts - Inp| | |BS Treasury Bills| | |Treasury MarketsTreasury Mkts - InpBS Treasury Bills|TMLevel1Securities
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now do a left join between the two and take the "best" result.&lt;/P&gt;
&lt;P&gt;Here is a trick using COALESCE() to let you match the missing values in the mapping dataset.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
 create table want as
 select a.row,b.lrow,b.bsmap,b.mapping_key,* from have a
 left join lookup b
 on  (a.pl4 = coalesce(b.pl4,a.pl4))
 and (a.pl5 = coalesce(b.pl5,a.pl5))
 and (a.pl6 = coalesce(b.pl6,a.pl6))
 and (a.pc5 = coalesce(b.pc5,a.pc5))
 and (a.pc6 = coalesce(b.pc6,a.pc6))
 and (a.prod_no = coalesce(b.prod_no,a.prod_no))
 and (a.account_number = coalesce(b.account_number,a.account_number))
 group by a.row 
 having b.lrow = max(b.lrow)
 ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs   row    lrow    BSMap                                        Mapping_Key

 1     1       8     TMLevel1Securities    Treasury MarketsTreasury Mkts - InpBS Treasury Bills
 2     2       6     TMNostros             Treasury MarketsTreasury Mkts - InpBS Due from Other Banks

                                Account_
Obs   BU   Currency   Prod_No    Number          PL4                  PL5                   PL6

 1     8     NGN        738      115120    Treasury Markets   Treasury Mkts - Inp   Treasury Mkts - Inp
 2     8     NGN        761      122001    Treasury Markets   Treasury Mkts - Inp   Treasury Mkts - Inp


Obs        PC5                   PC6

 1    Other Banking    BS Treasury Bills
 2    Other Banking    BS Due from Other Banks
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 06:35:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549187#M152365</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-04-08T06:35:36Z</dc:date>
    </item>
    <item>
      <title>Re: mapping dataset using multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549289#M152390</link>
      <description>&lt;P&gt;Instructions here: &lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712&lt;/A&gt; will show how to turn an existing SAS data set into data step code that can be pasted into a forum code box using the {i} icon or attached as text to show exactly what you have and that we can test code against.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm not even going to try to create any data set from the posted text.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;first I get a mapping key by concatenating the different columns&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That sounds like a poorly defined operation to begin with but to duplicate that step you could use in a data step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MappingKey = catt( var1, var2, var3 &amp;lt;list your variable names).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please not that most of your "mapping key" values show a beginning C that does not have a column shown that would contribute such. So there seems to be something missing either in the data or your problem description.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You don't really indicate where the BSMap value comes from so I don't know if you are asking for help with that.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 14:52:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mapping-dataset-using-multiple-columns/m-p/549289#M152390</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-04-08T14:52:43Z</dc:date>
    </item>
  </channel>
</rss>

