To answer your question at a fundamental level, you don't need to "cleanse" the dataset just because you are reimporting it; it will automatically be replaced.
You could write a macro to do the import, like so:
%macro import_myfile(i=);
proc import file="...whatever...\mar&i.txt" out=mar_&i. dlm=',' replace;
run;
%mend import_myfile;
%import_myfile(i=2009);
%import_myfile(i=2010);
%import_myfile(i=2011);
%import_myfile(i=2012);
You could write a loop to execute that from 2009 to 2012, but it's not worth the code if it's just four runs. If you have a dynamic number to execute, and those values are in a dataset, you could do it this way:
data data_torun;
input filenum;
datalines;
2009
2010
2011
2012
;;;;
run;
proc sql;
select cats('%import_myfile(i=',filenum,')') into :listtorun
separated by ' '
from data_torun;
quit;
&listtorun.;
*this will become the same four calls as above;
It is typically better to have data like this kept in dataset form rather than in code when it potentially could change (even in a loop). That way you could store this in a text file and read it in.