Search code examples
spss

analyze outlook calendar data in spss


I downloaded Conference Room Usage from outlook. I want to know

  • How busy are the conference rooms?
  • What are the hot times?
  • Who are the super users?
  • Who are not the super users?
  • How many recurrent meetings take place.

This issue i'm having is that I need the duration between the "StartTime" and the "EndTime"; but they are currently strings!

start end starttime endtime
1/1/2014 1/1/2014 5:00:00 PM 5:00:00 PM

Also, it's likely safe to assume that StartTimes and EndTimes do not straddle two days, but perhaps I want to check for this. Perhaps conversion to a 24-hour clock might help; "Duration" is then "EndTime" - "StartTime". How can i convert back to a 12-hour clock for the uninitiated. Finally, I need the day of the week (Monday, Tuesday, etc) an event falls on.


Solution

  • This can mostly be accomplished through the wizard.

    some sudo code that should do the trick would be

    COMPUTE Start=number(StartDate, ADATE10).
    VARIABLE LEVEL  Start (SCALE).
    FORMATS Start (ADATE10).
    VARIABLE WIDTH  Start(10).
    EXECUTE.
    
    COMPUTE starttimetest=number(StartTime, TIME8).
    VARIABLE LEVEL  starttimetest (SCALE).
    FORMATS starttimetest (TIME8).
    VARIABLE WIDTH  starttimetest(8).
    EXECUTE.
    compute teststartadd=start+starttimetest.
    
    DO if index(starttime,'PM') gt 0 and subs(starttime,1,2) ne '12' .
    COMPUTE Realstart=datesum(teststartadd,12,'hours').
    ELSE.
    COMPUTE REALstart=TESTstartADD.
    END IF.
    
    COMPUTE End=number(EndDate, ADATE10).
    VARIABLE LEVEL  End (SCALE).
    FORMATS End (ADATE10).
    VARIABLE WIDTH  End(10).
    EXECUTE.
    
    COMPUTE endtimetest=number(endTime, TIME8).
    VARIABLE LEVEL  endtimetest (SCALE).
    FORMATS endtimetest (TIME8).
    VARIABLE WIDTH  endtimetest(8).
    EXECUTE.
    compute testendadd=end+endtimetest.
    DO if index(endtime,'PM') gt 0 and subs(endtime,1,2) ne '12' .
    COMPUTE RealEnd=datesum(testendadd,12,'hours').
    ELSE.
    COMPUTE REALEND=TESTENDADD.
    END IF.
    exe.
    delete vars Start
    starttimetest
    teststartadd
    End
    endtimetest
    testendadd.
    exe.
    
    formats RealEnd RealStart(datetime23).
    compute Length=datedif(realend,realstart,'hours').
    if length > 12 check=1.
    freq check.
    compute StartWkDay=XDATE.WKDAY(realstart).
    compute EndWkDay=XDATE.WKDAY(realEnd).
    string StartDayText EndDayText(a8).
    

    you'll have to convert using something like *if XDATE.WKDAY(realstart)=1 startdaytext="Sunday".