Archief - SAS vraagje, vreemde IF-statement

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Genious

Legacy Member
Het gaat over volgend stukje code (onderdeel van grotere hoop code van cross-sell programma):

Code:
%macro loop2;

%do counter = 1 %to &numberobs;
  data new;
  set h3.purchaselines_timewindow2;
  if _N_=&counter then
    do;
	  call symput('m_customer',customerno);
	  call symput('m_date',put(purchase_date,ddmmyy10.));
	  call symput('m_prodcat',prodcat);
	end;
  run;
  %put &m_customer;
  %put &m_date;
  %put &m_prodcat;
  %calculate_RFM(&m_customer,&m_date,&m_prodcat,estimation_sample,out_estimation_sample)

%end;

%mend

Het gaat mij om volgende if: if _N_=&counter then
Ik zie niet in hoe hier _N_ ooit kan verschillen van &counter :x
(met als gevolg dat het ik het doel van dit stukje code niet begrijp)

Parnakra

Legacy Member
Voor zover ik iets van SAS-code ken, vermoed ik dat _N_ hier de iteratie van je new-data bijhoudt (data new; ) en je counter gaat over de overkoepelende lus die tot &numberobs loopt.

Genious

Legacy Member
khad het er beter bij vermeld, maar die new wordt nooit gebruikt.
die staat daar gewoon om een werkende data step te hebben.

het is de data uit de oorspronkelijke set h3.purchaselines_window2 die eigenlijk van belang is voor die stap, omdat er daaruit waarden nodig zijn om in een macro te zwieren. (die waarden worden er uit geplukt via call symput)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan