This is from another SAS practice questoin. We have a raw data file: 1001 77,164.19 76,804.75 74,384.27 1002 76,612.93 81,456.34 82,063.97 1003 82,185.16 79,742.33 We want to transform the raw data file into the following data set: Store Sales Month 1001 77,164.19 1 1001 76,804.75 2 1001 74,384.27 3 1002 76,612.93 1 1002 81,456.34 2 1002 82,063.97 3 1003 82,185.16 1 1003 79,742.33 2 There are several alternatives, to choose from, the correct one being: data perm.topstores;
infile sales98 missover;
input Store Sales : comma. @;
Month=0;
do while (sales ne .);
month + 1;
output;
input sales : comma. @;
end;
run; Now, could someone walk me through what's happening in the different steps? I think I understand the virst relevant line: input Store Sales : comma. @; This simply specifies the variables, the ':' alows us to use an informat for 'sales', so we can process those non-standard values. The @-sign should "lock the row into place" allowing multiple observations to be read from the same row. Though in my understanding, this would mean values from each row should be assigned to Store "and" Sales, so for the first row we would get something like: Store Sales 1001 77,164.19 76,804.75 74,384.27 The next segment of code is hard to follow: do while (sales ne .);
month + 1;
output;
input sales : comma. @;
end; What exactly does "do while (sales ne .);", mean, do we execute the steps as long as the values of sales aren't missing? How exacly does this step specify that the counter is to be reset for each new store?
... View more