<?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 %Lexis macro getting risk by each year (person-time) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Lexis-macro-getting-risk-by-each-year-person-time/m-p/929237#M365631</link>
    <description>&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have generated person-time at risk for my population.&lt;/DIV&gt;&lt;DIV&gt;The %lexis macro has given me the person-years at risk for each of the age categories.&lt;/DIV&gt;&lt;DIV&gt;(not going to post the whole macro here. it is available below:&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;Author: Bendix Carstensen, 1999-2002
Update: Paul Dickman, BxC, November 2003
Bug-fix: BxC, December 2007:
         If the origin= argument had missing values erroneous output would
         be generated (too much risk time). Now remedied so that
         observations with missing values of origin are excluded.
This macro is in: http://www.biostat.ku.dk/~bxc/Lexis/Lexis.sas
Example program:  http://www.biostat.ku.dk/~bxc/Lexis/xLexis.sas ​&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;data lexis_out2;&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ENTERED&lt;/TD&gt;&lt;TD&gt;EXITED&lt;/TD&gt;&lt;TD&gt;AGE_BAND&lt;/TD&gt;&lt;TD&gt;AGE_ENTRY_OLD&lt;/TD&gt;&lt;TD&gt;RISK&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15-Sep-76&lt;/TD&gt;&lt;TD&gt;16-Aug-80&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;36.08196721&lt;/TD&gt;&lt;TD&gt;3.917864&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-80&lt;/TD&gt;&lt;TD&gt;16-Aug-85&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-85&lt;/TD&gt;&lt;TD&gt;16-Aug-90&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;44.99896699&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-90&lt;/TD&gt;&lt;TD&gt;22-Dec-92&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;49.99896699&lt;/TD&gt;&lt;TD&gt;2.350445&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;However, I want the person-years at risk for each year the individual is in the study. For this individual, it is 1976-1992.&lt;/DIV&gt;&lt;DIV&gt;Here is an example of the desired output:&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;YEAR&lt;/TD&gt;&lt;TD&gt;AGE_BAND&lt;/TD&gt;&lt;TD&gt;RISK&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1976&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;0.4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1977&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1978&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1979&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1980&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1980&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;0.33&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1981&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1982&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1983&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1984&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1985&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1985&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1986&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1987&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1988&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1989&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1990&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1990&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1991&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1992&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;0.98&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Below is additional coding for the %lexis macro -&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;	/*the LEXIS macro written by Bendix Carstensen for splitting person-time*/
	%Lexis(
		data=trypt,
		out=work.lexis_out,
		entry=entered,
		exit=exited,
		fail=status,
		origin=born,
		left=age_from,
		right=age_to,
		scale=365.25,
		breaks=%str(17,20,25,30,35,40,45,50,55,60,65,70,75,80,85,9999)
		);

data lexis_out2;
attrib
	id label="ID"
	born label="Born"					format=date7. 
	entered label="Entered"				format=date7.
	exited label="Exited"				format=date7.
	age_band label="Age-at-risk band"	format=$5.
	age_entry label="Age-at-entry"
	age_exit label="Age-at-exit"
	time_entry label="Time at entry"
	time_exit label="Time at exit"
	fu_yrs label="Follow-up length (years)"
	status label="Death";*/;

set lexis_out;

rename age_entry=age_entry_old risk=fu_yrs;
drop age_exit fu_years lrisk;

time_entry = yrdif(born,entered,'act/act') - age_entry_old;
time_exit = time_entry + fu_yrs;
age_entry = yrdif(born,entered,'act/act');
age_exit = yrdif(born,exited,'act/act');
age_band = put(age_from, 2.0)||'-'||put(age_to-0.1, 2.0);

drop age_entry_old age_from age_to;

run;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 22 May 2024 13:12:23 GMT</pubDate>
    <dc:creator>redandwhitesox</dc:creator>
    <dc:date>2024-05-22T13:12:23Z</dc:date>
    <item>
      <title>%Lexis macro getting risk by each year (person-time)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Lexis-macro-getting-risk-by-each-year-person-time/m-p/929237#M365631</link>
      <description>&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have generated person-time at risk for my population.&lt;/DIV&gt;&lt;DIV&gt;The %lexis macro has given me the person-years at risk for each of the age categories.&lt;/DIV&gt;&lt;DIV&gt;(not going to post the whole macro here. it is available below:&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;Author: Bendix Carstensen, 1999-2002
Update: Paul Dickman, BxC, November 2003
Bug-fix: BxC, December 2007:
         If the origin= argument had missing values erroneous output would
         be generated (too much risk time). Now remedied so that
         observations with missing values of origin are excluded.
This macro is in: http://www.biostat.ku.dk/~bxc/Lexis/Lexis.sas
Example program:  http://www.biostat.ku.dk/~bxc/Lexis/xLexis.sas ​&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;data lexis_out2;&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ENTERED&lt;/TD&gt;&lt;TD&gt;EXITED&lt;/TD&gt;&lt;TD&gt;AGE_BAND&lt;/TD&gt;&lt;TD&gt;AGE_ENTRY_OLD&lt;/TD&gt;&lt;TD&gt;RISK&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15-Sep-76&lt;/TD&gt;&lt;TD&gt;16-Aug-80&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;36.08196721&lt;/TD&gt;&lt;TD&gt;3.917864&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-80&lt;/TD&gt;&lt;TD&gt;16-Aug-85&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-85&lt;/TD&gt;&lt;TD&gt;16-Aug-90&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;44.99896699&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16-Aug-90&lt;/TD&gt;&lt;TD&gt;22-Dec-92&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;49.99896699&lt;/TD&gt;&lt;TD&gt;2.350445&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;However, I want the person-years at risk for each year the individual is in the study. For this individual, it is 1976-1992.&lt;/DIV&gt;&lt;DIV&gt;Here is an example of the desired output:&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;YEAR&lt;/TD&gt;&lt;TD&gt;AGE_BAND&lt;/TD&gt;&lt;TD&gt;RISK&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1976&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;0.4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1977&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1978&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1979&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1980&lt;/TD&gt;&lt;TD&gt;35-40&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1980&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;0.33&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1981&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1982&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1983&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1984&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1985&lt;/TD&gt;&lt;TD&gt;40-45&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1985&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1986&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1987&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1988&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1989&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1990&lt;/TD&gt;&lt;TD&gt;45-50&lt;/TD&gt;&lt;TD&gt;0.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1990&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1991&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1992&lt;/TD&gt;&lt;TD&gt;50-55&lt;/TD&gt;&lt;TD&gt;0.98&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Below is additional coding for the %lexis macro -&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="sas"&gt;	/*the LEXIS macro written by Bendix Carstensen for splitting person-time*/
	%Lexis(
		data=trypt,
		out=work.lexis_out,
		entry=entered,
		exit=exited,
		fail=status,
		origin=born,
		left=age_from,
		right=age_to,
		scale=365.25,
		breaks=%str(17,20,25,30,35,40,45,50,55,60,65,70,75,80,85,9999)
		);

data lexis_out2;
attrib
	id label="ID"
	born label="Born"					format=date7. 
	entered label="Entered"				format=date7.
	exited label="Exited"				format=date7.
	age_band label="Age-at-risk band"	format=$5.
	age_entry label="Age-at-entry"
	age_exit label="Age-at-exit"
	time_entry label="Time at entry"
	time_exit label="Time at exit"
	fu_yrs label="Follow-up length (years)"
	status label="Death";*/;

set lexis_out;

rename age_entry=age_entry_old risk=fu_yrs;
drop age_exit fu_years lrisk;

time_entry = yrdif(born,entered,'act/act') - age_entry_old;
time_exit = time_entry + fu_yrs;
age_entry = yrdif(born,entered,'act/act');
age_exit = yrdif(born,exited,'act/act');
age_band = put(age_from, 2.0)||'-'||put(age_to-0.1, 2.0);

drop age_entry_old age_from age_to;

run;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 22 May 2024 13:12:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Lexis-macro-getting-risk-by-each-year-person-time/m-p/929237#M365631</guid>
      <dc:creator>redandwhitesox</dc:creator>
      <dc:date>2024-05-22T13:12:23Z</dc:date>
    </item>
  </channel>
</rss>

