I suggest you create a table that looks like this.

You can then read through the table and build a list of the columns that meet whatever N vs. N Missing for each store you need to delete.
Here is a sample script to create the table
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
You could use the Tabulate Platform to create the table, but you indicated you have thousands of columns. I don't believe Tabulate would be the answer in that case, however the above script should handle it.
Jim