I am working with time use data. 3 Days have been tracked. I'd like to get the total time spent on those three days on each activity.
my data looks something like this:
id| activity1 |activity5 |activity6 |activity761 |quarter
1 | 60 | 0 | 0 | 0 | 3 |
1 | 50 | 0 | 0 | 0 | 3 |
1 | 0 | 0 | 0 | 0 | 3 |
2 | 10 | 0 | 30 | 0 | 2 |
2 | 10 | 0 | 30 | 0 | 2 |
2 | 0 | 0 | 0 | 5 | 2 |
3 | 0 | 0 | 0 | 5 | 4 |
3 | 0 | 0 | 0 | 5 | 4 |
I'd like a result something like this:
id |activity1 |activity5| activity6 |activity761 |quarter
1 | 100 | 0 | 0 | 0 | 3 |
2 | 20 | 0 | 60 | 5 | 2 |
3 | 0 | 0 | 0 | 10 | 4 |
somewhere else on this board I found code working for my usecase, but it is very slow, also SAS Student edition warns me no to show the output.
proc means data = timeuse nway;
class id;
var activity1 activity5 activity6 activity761;
output out=timeuse_added sum =;
run;
Any suggestions on how to speed up this step? (to keep the quarters I managed to merge the old dataset by id)
How many observations do you have? Why do you need PROC MEANS to run faster, and what do you consider slow?
I made two changes to your code below. If you presort and switch to a BY instead of CLASS it may be faster if this isn’t fast enough.
@asdf0990 wrote:
I am working with time use data. 3 Days have been tracked. I'd like to get the total time spent on those three days on each activity.
my data looks something like this:
id| activity1 |activity5 |activity6 |activity761 |quarter
1 60 0 0 0 3 1
500 0 0 3 1 0 0 0 0 3 2 10 0 30 0 2 2 10 0 30 0 2 2 0 0 0 5 2 3 0 0 0 5 4 3 0 0 0 5 4
I'd like a result something like this:
id |activity1 |activity5| activity6 |activity761 |quarter
1 100 0 0 0 3 2 20 0 60 5 2 3 0 0 0 10 4
somewhere else on this board I found code working for my usecase, but it is very slow, also SAS Student edition warns me no to show the output.
proc means data = timeuse nway noprint; class id; var activity1 activity5 activity6 activity761; output out=timeuse_added sum = / auto name autolabel; run; out
Any suggestions on how to speed up this step? (to keep the quarters I managed to merge the old dataset by id)
@Reeza wrote:How many observations do you have? Why do you need PROC MEANS to run faster, and what do you consider slow?
I have 32105 rows and 705 variables in the dataset. I want to add up about 100 variable values. I consider 5 minutes for that step slow, given that I want to 20x the amount of calculations to be done.
thank you for the tips, I sorted allready, will look into the rest
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.