Hi: I think this is one of those situations where more information is needed. Many procedures that use BY group processing treat each BY group as a separate entity. Proc Tabulate does that. And you might think this is a good thing.
Well, sometimes it is a good thing. But if you do use BY group processing with Proc Tabulate, you sometimes get undesired side effects from each BY group being treated as a separate entity...for example... each BY group is 100% of itself. So there's no calculating the BY group as a percent of ALL the by groups. Not a big deal if you're NOT doing percents. But when you are doing percents and you need for each BY group not to be treated as a separate entity, then you have to use PAGE processing with PROC TABULATE to get a percent of the whole and a percent of each group.
So it comes down to how does YOUR procedure of choice handle BY groups??? Does your use of the BY statement affect the analysis in a desirable way, an undesirable way or with no effect? Do you get the exact same results with a BY statement in your procedure as you do with the subsetting approach? Nobody can answer this question for you. You have the data. You know what procedure you're using. You can make up a test.
Make a test dataset with 2 by groups. Run your subsetting code and your analysis on this test dataset. Print these results. Then make a second program without the subsetting approach, but with a BY statement added to the analytic procedure and run your analysis with BY group processing (on the same test dataset). Print these results. Carefully and methodically compare the results of the 2 different methods. You have the SAME data going into two different versions of the same procedure's analysis. Comparing the results of these 2 versions of the program should be instructive in helping you make your decision.
You can do all of this without involving SAS Macro facility -- and probably should avoid Macro questions/issues -- in order to make your decision. Using BY group processing or a BY statement really doesn't have anything to do with the SAS Macro facility. The reasons that some folks DO use the Macro facility or a macro program to subset and run each BY group separately are:
1) they want to be able to stop and start or repeat the analysis for a group without rerunning the whole group
2) there are some title/footnote and output file creation reasons for using Macro ..as for example, when you want the name of the BY group to be used for the name of the analytical report output file.
3) they want to alter some parameters used by the analytical procedure, as when they know they need some procedure option with one by group, but not with another.
4) you're not just running one analytic procedure as part of your analysis -- but you are doing some data manipulation, perhaps some data cleanup and/or some restructuring of the data or some merging -- and it's cleaner to do the process on every group separately -- before it goes into your procedure of choice -- so you are repeating these cleanup and data manipulation steps for every subset.
It's really hard to comment on your question without knowing how BIG is big and what your procedure of choice for the analysis is. If you have a LOT of code or the code leans heavily toward the ins and outs of a particular statistical procedure, then you might consider contacting Tech Support with the question about whether BY group processing would have an adverse effect on the analysis from your procedure of choice.
cynthia