RDX2 X   .SavedPlots z   plot.new plot.window@@7@Y  plot.xy?@@@@@@@ @"@$@&@(@*@,@.@0@1@2@3@4@5@@@@@@ @"@$@&@(@*@,@.@0@1@2@3@4@5@6@7 Index first.hr:last.hr names x y xlab ylab n  solid black ??axis?      solid??  axis@      solid??  box which  lty solidtitle Time of Day (hr) Efficiency (percent)  plot.xy@" @$(@)4Vx@*ʆA@/=p @0FW@0@089@089@088@2ffffff@2iI@2>@3˩f@5Q@5ò@3Z@'ZS@2b3ؓ@)Z}@*l~@*,@1h=)@1h=)@4#:@2L.EJ+@2dU>@2HY@4NzG@4o@5n]@67HZ@(V8@'B)B@6l @3:9@8)PXvc@+fq@-dT#@)㨧Bpu@2l@0{%@4-`u@3a r@8_ x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@88@t B@!HY@#p =p@3. @34@3OO@5~K@XOF 7@C\J@M9҇]@/x\@0d *Z-@0Ġ@6  x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ %,_@ 0d@ J=p @"6 ` `@#p >@&YF@(OO@)I4@/ =p@0 Q@0$ò@10d@2q@3c|@3n@3ò@4Q@5OO?7?i帇@9[t6Y@6Rs@ECҭ@B0@Cy8@;R@>vb@>gg*M@A|@@.@C?clH@CN@CR@Bgۀ@DYد x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@3;$h@3@4HY@4` `@5}i6@5\)@5\)@6@2wH|@s_k@3Ix@F D@ݰ!a@B#L@g< x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @*=L;*@* ` a@*Vx@+OP@05@1J@20d@25,_@3~]L;*@3 ܺ@3#Eg@4[eC! @iߘw@ûI"@[)M@|f1@%Ef@$h;@$Y_@"dOHk:@"6'@">ېR@)EqP˧ x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@o@6i8@&@)@4P@4 ܺ@4հ[[@5p >@Gy@0p!M@A7}q@0:'^@1X#&`@0$Ơ@5Sn x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@"z+?@3wwwwx@3?.@5+@F#W@AGhL-@Cŀa+@C윷@D.vB x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@dOO@#B@?3Ƃa@@ܓo(@?re@?rI x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ ŋX%@!s @"vT2@#l_,@% @&ۗS@0?@1O@1qr@2mL;* @- i@'H آa@6h5t@0FR@8QbZr@(3@2L~ @2,$>J@8H[Z x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @?.@# =p@"/c@"@t@$}'}(@'p =@0~K@1~K@1#Eh@2zG @MD>@RCd@RխZ@MV@QON@E2ӌ@G@Ff@H//K x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@0d @!T2@'@("FX@,>@1 @Dver.@5za(@8> @2$Cz@D'5nfi x y xlab ylab p@0 solid blue blue blue blue blue red non-final non-final non-final non-final non-final final ??plot.xy@@ +? ZG x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @IJ@h5z@;@ 7wwwwx@!Pn]L;@%OP@1Q@2Y,_@2:Ӡm@3/c@5R@5R @Y@>:bΘ@H(@DWC@O5eO@;%߼@>SL=@=,%@>ٲ@:EQP>@;6q x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@#X--@$~L@&?.@*vT2@/Au@0X5y@05y@05y@1~L@2j|@4=@4Fffffg@5,@5b4Vx@6ò@6@.cLw@*tR?F@@R @8vݫoo@;5b@;xTwݬ@= kr @:"K@?]skw@;_WK@<&O@:@@;4_4@97@: Ul&| x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ =p@%Y@=p @J=p @,_@ `@ ]L;*@!Y@#-.@%%,_@)33333@,u0@1}'}@2@4{4W@44Vx@4ʪ@4#Eg@CRi@\@B}RMl@O(?%@A;ڨ@FT)D@E <"@G|9 @B]s3@F az@@bܰ@DAiL@@7o2@BϹ04@@uf@@"e@@N?B@@ c x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @4N@EQ@ ,dۘ@!y@#q@$pn]L<@2c @2u0@4]L;*@5Th5z @VZ@2"(@@c@9F ]@>17=@'c΍@.c@+@0å x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ FX@!W$i@#eQ@$&7@&o@&Q@'/c@( Q@)@@)x@*qr@,UyF @6ZAL@1E@> r@:a}=A@=fh@/諣@;lYz@A#%zn x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @%Q@''}'~@-Gz@. @t@/@02j|@1ll@2DDDDE@4W$h@4 @*>@!8xk@,9+*@*f6K;@-<%@) @1X@-M@~v6@0 x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@@@]i6@ }'}'@"3ʆA@#]u0@%̃rb@'vT2@)ó@*F@*II@-HY@1[Q@29>>@Y@4P^[@F@B?@EyeN@Ab@E b[Y@CiP@EOOt@EN<̌sQ@IY=@DDYr@Fn5!? x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@Au1@/7HZ@"2˩@$~o@* HYk@*@*@,#Eg@0+-:ׯ@7bD}@:P4@8 @@@",v@5])@8W@63Ze@9źP@5HC@8K@9d}3@=)@=^p@@Bu)@==x@?-9@8s_,@;r. x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ I@ I@ n@"Y@$|@%'}'@06i@1Ij|@1qYj|@1fffff @2V X@/f2@B6@>^ux@@ T̳@1NC@9h@9m@9HA2 x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@/c@I4@II@ I6j@!$ @!L;*@"[[@$,rb@-@t @.R@2!N@2 =p@4P?@5S89@iLK{@hL_@:j@77n1@=2dɓ.@:@A4bE@38%-@5@M@112y@3|Y/@1*@8ue x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@! r@" ` a@#4Vx@$4Vx@&=p @(m:@*@ܺw@,j|@1$h5@1$h5@2#Eh@3Eg@4 X%@7BFV@57`@3Cs@<3]@8P@@x4;c@?@E' x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@$|M^o@'N@5n]L;@5k*@5_@ gr@%0v. x y xlab ylab p@0 solid blue blue blue red non-final non-final non-final final ??plot.xy @!*@#E[\@$#Eg@%6i@':#E@(&7@0h5y@1 raP@1G{@2Gz @6:<@3?@'ffffg@+Q~K@,ra@, r@.Cra@0YF@0j|@5n]L;@5$h@EB|@?v{O2@@;r@?umB@F%@B$@C06@C`U@ETN@Cs!|8a@D`yԋ@=/O@=< x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ Ӡm:@1~K@TzG@\(@ +@!|#Eg@$. @%ۗSʆ@&\(@'ԟIK @W[}@LoXHN@NI@@/WJ@L>ÀA@B3(q@F7Y,@F7U0@JC|7N% x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@@t @I@{@dۗS@ =p@ J@"˅Q@$vT2@%@t @&2˪@+YF@/YF@6!@6'}'@6\(@6Ӡm:@%t/3@#@4XǕA@1@,@;4-C@3xkB@@U@>|v@B48@:fV@D#0[@9T(}u@;%@;vtB@;1 { x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @G{@"4Vx@%ژvT2@(x$@.x@/33333@3u0@4g =p@4@t @5b0@6-i6@6N @Ha@A3z6l@G!]@@B@Az@:O@>q@=X)@@5`<w@?^5CH@@h$N x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @7HZ@N@ Au@ Au@!^o@!@" +<@' +<@+u0@0@ܺv@4 @5[raP @Y@Ax*@OD GG@B. rq6@DXÄB@C-?q@MUwm6@F `@LNf@D.L#@E: x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@R,_@vT2@\vT2@"Y@#--@% -@*zG@-dۗR@1˗Sʇ@2wwwwx@2@2P?@2P?@3yI@3=p @4t B@5w@5 +o6Ɵ@D "@?Tt@@D\0U@?[n!@@bzЬ@@bzЬ@AO$*q@Amp@C] @CbC\@C  x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ܺvT2@2˩@,_@M4Vy@!R@!$h5z@"%X@$t2˪@&X +E@0M@0ȊKD@,+L+S@9[P@6OY>@<3 @; O @BIA@>uL߆@ACc͘ik@@69 x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@-.@X--@4Vx@ 牫@$\#Eg@%,_@&2˩@'qq@)dh5z@+'}'@/333333@07ó@0ށO@2P?@3@4L_,@ +4@l0`[@2V7ٱ@+@5z^O1@4 E@;)E@8a@@@gmٌ@;額~@?q#@=f@Ap%@@G @C{x x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@Au1@(dۗS@! =p@$89@%hYj@&Q~K@&~K@'Q~K@'d&@*ޓ>@+Gò@,O\(@34Vy@37HZ@4'@5 x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@. @II@ۗS@FX@i6@!]L;*@(` `@),_@4*@4՞&7@4UUUUU@5K@5d~K@5ݧ@t@Duo@Djۧ3@K5.w!@?޵*@I[q3h@sce@>g)G@A x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@'@t @(\)@!@!%X@# r@$ó@'u0@*o@* ` @,&7J@.}L;*@0ra@1IF@2all@3Vx@4II@W9F@*Gҳh@/}>@6 ` `@uyF@@ )b/@!8@"/b@#vi6@#l@$zG@%t2˪@%@(`m:ӡ@*y,_@+HdۗS@,@,Q@0"n_@01#Eg@1#>?@4F +<@4&7H@rPR@r;@9T@d@8՜$@?g@mK~@B+:@Eky6@Dbα`z@DE;@Aq\:@E-ps@DGnn@Fy@F:M @JmK8@JMRN@L@F~o@GB x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@. @\(@$@&X +@$/7HZ@$t2˪@,JAu@-)6j@-JaP?@/Cra@3jG{@4K*@4Vx@4}'}@9++@1.U&?@26@17-J@3o%"!@%׍ȼ~@.@-gA@7~e\@0oh0A@5~Nw@5G<@7R3 x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@-y@.@0@t @0 @t@10 =q@1[[@(V@Lb9@E7-@x@'SF?:W x y xlab ylab p@0 solid blue blue blue blue blue red non-final non-final non-final non-final non-final final ??plot.xy@ ó@ra@i6@2X%@ ò@#0n]L;@%G{@& l@V锘>@/bȡ@8 Sg@1Lb@Bw( @>@'l?@@  x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ 9,_@ i6@#>&7I@#~L@$n]L@%GzH@+'}'@,0d @4 rb@4 + @T@ӝp@%P\H@$MTn@*g`@"2ۀ@@) @ hl@(9,KHt x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ @t@ _II@ bj|@!` `@#UUUUUU@$ ` @)333333@) ` @/7H@0zOO@0wwwww@1K[@2n]L;@3陙@4[~K@5dN@WpN@ҙ*@6v .|@23r@7l['@07Y)v@3F@,0a @26 ǐ@1̸@4K(b@1@7lK@6ۊ@;n x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ yF@'@t @~K@~K@vT2@+e]g x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy?u0d ?u0d ?\(@8:@#òo@%n]L;*@,U +@0*|VFH"X jD@G˲ @Lp|r@@w@G }_ x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@"eC @'\(@+W@,Tò@-#E@0<(\@5u\(@63ra@Cc@;yH@>xƅ@;%@BG/S@87#@;7) x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@S>>@.@![$h@#5yF@'ʆA@*ۗS@+ rb@,|qq@-.@-\(@1 @2 F@2 @3o@5eC ܺ@5X%@'$@!}IzX@=vM@5GҐ@@"~@>.@Aa O@A!=V%h@B9\,@>0P E@A݁@@#g@BE@@#T<2@@&d x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ --@?.@ +@WRj@VYHp@W)1Ȟ@Mh+@NF^@Mρ~Te x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@L;*@l5y@ @t@ }'}@"/b@""""""@%@t @%N@%p =@&ra@({Sʆ@*T @t@*T2˪@+raQ@1,dۘ@1%Y@3NF@4Au1@5 XB@52Er"bE@?RK@9}@=]"@5(I3c@6rU@6!@<.J@8"@@B@@{mp@BHaO_@:\9g@?Z @<7֦@?ۍ"SI@>ED@@e x y xlab ylab p@0 solid blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ B\(@W =p@--@/b@(}'}@)&@45yG@5a@Tv@- GJ@A[o@1@4 rʯ@&]y@-} x y xlab ylab p@0 solid blue blue blue blue blue blue blue red non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ +>@/Yj@0`d@1lm@1Qll@2N@3GeC @3.@4U r@4N@56i@5*@5*@5bn]@S-@6S9@Cq@JaA@F .$f@GT. eZ@Co;6@GU+@FIQw@GSyrk@Glv@H3A@GY%#@GZ*@G73@H&P@GeF@G@H:p@H:p@Hu Y* x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@Au1@"\(@%Q@&У =p@*m^o@+̃ra@-EQ@.Q5yG@/t @@1j|@1j|@2gó@36j@4X +@-m:@0t A@23Eg@36i@3eC!@4e0d @5u&7@I+3ϝ@C7\mD@HfӾ@F_dC@GfJS@Eh*ӟm@Hfk.@FNb:@JC|@I% f@J!L@H#T@Jb~ x y xlab ylab p@0 solid green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @zG@!eC @"vT2@#S@#T @t@#n]L;@#?.@&=i6@&=L;*@&?.@)9u0d@,u0d @Lh$_@HT@I=yZL@Iv@J3!r@Jmtr@O[s*S1@OZ@P(?;@Kh@OT x y xlab ylab p@0 solid green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@m:Ӡm@ OO@!d@#ll@$ò@&H@'W$h@(G@/DDDDD@/e[[@0yF@2\qq@3\@3ᢳ@49eC @4Gz@4ll@5vAu1@E3ω@C{W@I TD@Fu@JO rs@HFeVp@I5 kl@AXʹ@BQK@@1@EGYj$@CU@Dځ,D@Dci)c@E*e@E7@FP9 x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@~K@R4Vx@R,_@ *=p @" @%!#Eg@)n]L;*@)(\@,˩@-ԟIK@-ò@00t A@1. @2W$@4%yF@5au0@H?@Hah@MI'@E'~n@K/@D#ILL@E]"@B d@Cc[@Cocu@F5[HS@D5 5@FrbIz@DI@FaKM x y xlab ylab p@0 solid green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ ϤO@=p @=p =@ۗS@!qYj|@$C ܺ@%I@&Tò@&U r@'raQ@,@-UyF@1qP?@3 =r@3i6@4Fi6@PϬ*t@?Q[@C'Ίd@@ o>@Ir+}@FʩmY\@Hr @Hqq@Ka{@E.f7@Gɦ@@B.@EI픩@E.6@F, x y xlab ylab p@0 solid green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ò@='}'@ۗS@I5@ H@$ۗS @%NʆA@& ܺ@'6 ` a@(U&7@(V ` `@)&7H@/P?@0'}'@3>@T"I@?Tnts@F&$v@A@P#H@NyDU@O"ɖ@L0kfX@M^q@HY@Kwמ:R@JK&pH@Jv@Jy@J^K`  x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@@wwwwwx@wHY@ /b@ wwwww@#Wwwwww@%Sʆ@&~K@*aP@,%C ܺ@,%X%@-ò@0&T2@1#Eg@1W%@1 @2eC @2B,_@5~K@5raP@6X%@7/W$@"d &@@"c$"@IK{m5@I]v@P%@Itatl^@K-;*@Ci@FC<4@FڥA@H\2@E'YL@I'q@I'vV@I6M{k@Ho+@Hm-@DsWt@E^}@D*F/#@E_/ٟ x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@\vT2@$g@'. @+7 =p@,Q@.YF@0<_-@0&7J@1SEg@2O@3|l@4baP@488@5C ܻ@P1@G/F@Leпy@J~@L_rC@J./@K8z9@Ie b@K{y@I<@J]o@I'臜@Jv9 x y xlab ylab p@0 solid green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @SʆB@ؿ%X@W$i@P?@!|/b@&*Ar@&پF@(b/@+X%@,R}'}) @N;l@>"@Q;z@J%y@QN}2ZV@P{-2@Qr@Mlk7@NB x y xlab ylab p@0 solid green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@Yj@ܺx@n]M@! ܺ@%g@'15yF@'@*kQ@*keC!@+n]L;*@+.@+Z+>@0Ib/@19b/@2M˩eC@3+Sʆ@Ik3b@IiIPS@RVH#@Hgq0@LCW@K9x)˿@OѲ@Oi`@PK8P@PJ D@Pi3T@@K1W @Lԑ@L Q@N/su_@L8@Mv)% x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ /b0@q@0d@!{raP@"7HZ@%5y@'rb@+ò@+n]L;@-c88@0@1T2@2\@3*@5PHYk@64&@T333333@DP|2@KdN@GG℄@NlOP@I3@Jj@H!j/@J:IH@@GcH_u~ @HëLX x y xlab ylab p@0 solid green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@u\(@8#@[$h@[[@@t A@_ۗS@Z#E@N@ M^o@ N@ 0d @"`ܺv@%^&7I@'\(@+/7HZ@/qq@1r\(@2A~K@32aP@4!q@R)j@; `Eb@H)~@GUUUUY@JcJ't@H#Nx@N(=O@K[F'@Mc.@Mb]@Pe0@I!-@M(wD@H2H@M!D@Ix@K@Ij5%T<@J{X x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@m:Ӡ@$h5y@$OP@K~@(]@#^o@#O@$>@$Q@&Ib/@)%Y@+4@+m:ӡ@-n]L;@07HZ@1@1#Eg@2Cm:@3Yj|@4wzH@I@IMN@MМѱ@@d@Q Gu˕@QNK@QS/2@Q\Qp@R<(9@Mq@P{aQ@O=i@P|d*@K_"@MzuǑȈ@MzMގ E@Ng ?@KE.@L}] x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@Yj|@! =n@#n@$Yj|@([[@*,_@+^F@,@-i4@.5yF@0?.@0Yj|@1*+>@-˩@.qs @W8H@G _'%@Ou1ŷp@K] @Q @G0*@Hk$HU9@HjLE@KE8@JdO@K x y xlab ylab p@0 solid green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@K~K@\(\@\(@4Vy@!=p >@"b\(@#aP?@$ۗS@$@t @&m:@'ʆA@*Gz@*/c@+5 ,@-JaP?@.([@.ݹu0@/@0SʆA@0P?@0u0@1Sʇ@2 6i@2uX%@2u[[@2ʆA@4O@4qYj}@O`c{V@8U3 y@Fl@@-@DQN@B\g@Dz!"@C‚/ T@Hq«T@F9[g>@J&v@I}@JsaB@Gj1fY@ITc%A@IR=k@J}@IBv@J;W@JBsm@Lv.4@Le%NW@L5nM@L鈵\"-@MCk@KM+t(D@Lא{} x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@&8@"j|@Q@(*Au@)G{@*@+}'}'@,L;*@-Ob0@/@t A@/(\@0 /b@0ML;*@1"n]@1_ۗS@2R˩@2@3 @t@43m:@4>@5Vx@66j@Fһ@E}r.@G 9.|@CW@F[k2z@DBu@Ht}eh*@FY= @G=A~@F9o@Hr @H/$xM@Jm4yz@Is*QI@IICV@Ilrt@K {b58@J1Li@L#]Lks@K x@Mbzc@L҅R@Mů@Kqq@Mg&s99 x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@zG@ʆA@--@wHY@88@5y@eC @7. @ X%@!o\(@"33333@#33333@$/c@&/c@&qYj|@(d @(2˩@)(\(@*(5y@*vT2@*G{@, +=@--@.-.@0ò@1}˩eC@30d @4:Ӡm@4^o@5:aP@@CX} @,Ǫm@D~h@BɆ>@EH=ٙ[@EGl4ȓ@Iûaw?@F#ufc@G_̔@F0 3@HRS̹@H3N),@Kƫ@Kr @Mܟ&O@MLD@MۈQ@L1@L@2 @Lbh!@Nڑr@M`:\ى@N&M'@J-w@L@Gb @I?Kԣ@I8(@IpaiQ x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ ,_@=p @W@Yj|@+@6K@PH%b[@IX?@K}EA@H˱N@J,Fz@G"n@I ?@HOi@I 8)2@H _@@HjTA@Hܱ>@IMx@IIj!@IX @IȌe@IM@IJ@JF¿@J,p@J̉`! x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @ @$~K@ 4W@!T2@"W@#\*@#>>@%$h5z@&pn]L;@'bj|@*#Eg@.4W @I#J *@FЭK!@H$SrD@EW[_@Gq~{L;@Gq^$?@JB)@H/oG\@IX@F<۶@K}JcVx x y xlab ylab p@0 solid green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@;*@"˩eC@${*@&[Z@(j|@(j|@-.ʆA@0ʆA@0Q@2Q@2C ܺ@2n]K@3j|@3Sʇ@N}K@JnTz@M{@KW:Q t@K!@FC( @I{֞XA@H w-@IPhu@I\sS@Ji@I @J֪[ x y xlab ylab p@0 solid green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@+@ d@# r@&W$@'\(@(OO@*>o@*ll@*l@0  @M @G%+B@M] G@E"}ZN@KHa@J8ԇǾ@LzR@J HG=@JIL@JH3@PuIu x y xlab ylab p@0 solid green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@4W@ (N@"7HY@$4Vx@&OO@&}'}(@'n@)+4V@)@+@ܺw@,"""""@-~K@0si6@1<_,@188@2` `@3;raP@3@4SEg@4]L;*@Vq#NK@O@@Rbi@N@O&^V@L򎜣@O!8_@NGoV:@Ph4@N6uxa@OS^#@J @L9j}@J8o$@LAV  x y xlab ylab p@0 solid green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ D @U ,@+4V@qq@(N@ 5y@"Ll@$%X@%zG@%N@&ɇeC @()>>@*ra@,|@,II@-SʆC@.c =p@0ʆA@033333@0cm:@P:T@CP<'@J[ez@Go8@K8@ @GPay@Kےz@J˖x@Le@JIU~n@Lsm@H53@J_C@Ita0s@J4]_J@IX?s@K)@Kq@Kڃ} x y xlab ylab p@0 solid green green green green green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy @""""""@,5y@j|@!qR@%HYk@%g@&u0@) =p@,6x@,m:ӡ@-ͧ@t@.y @IWw@GhB e@M=px@G {m @HBU2@GjZFw@LV@I _3@I_r@H]i@I3(Z x y xlab ylab p@0 solid green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@;@WSʆC@f @"#E@#ܺvT@&# ܺ@'L_,@)5y@)ۻ@*[raP@/F@0ܺw@1ؿ%X@3O˩d@4vx@4@Q_p_8@8p@PR%l^@L 1@O j\@M@W-c@Ow@N@# C5@NDz}@H!S%@I?G@GJJ@J!m@H?7m@H[ x y xlab ylab p@0 solid green green green green green green green green green green green green green green green black non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final non-final final ??plot.xy@ + ףp=?< ףp=?zG????m?? R?V!:X? R?V!:X?Ŧ]L33?5$?@*:w@*:w@*:w@*:w@*:w@*:w? class recordedplot SavedPlots current source function (hour=FALSE) R{# returns vector of 6 integers: year, month, day, hour, minute, second, labelled. # ## hour return hrs since midnight? # *year=as.integer(substring(Sys.time(),1,4)) +month=as.integer(substring(Sys.time(),6,7)) *day=as.integer(substring(Sys.time(),9,10)) *hr=as.integer(substring(Sys.time(),12,13)) .minute=as.integer(substring(Sys.time(),15,16)) .second=as.integer(substring(Sys.time(),18,19)) Jnow=c(year=year,month=month,day=day,hour=hr, minute=minute, second=second) Pif(hour) now=c(1,(1/60),(1/3600))%*%as.numeric(now[c("hour","minute","second")]) now } hour  srcref   srcfile Enc unknown timestampAu POSIXct POSIXt lines function (hour=FALSE) R{# returns vector of 6 integers: year, month, day, hour, minute, second, labelled. # ## hour return hrs since midnight? # *year=as.integer(substring(Sys.time(),1,4)) +month=as.integer(substring(Sys.time(),6,7)) *day=as.integer(substring(Sys.time(),9,10)) *hr=as.integer(substring(Sys.time(),12,13)) .minute=as.integer(substring(Sys.time(),15,16)) .second=as.integer(substring(Sys.time(),18,19)) Jnow=c(year=year,month=month,day=day,hour=hr, minute=minute, second=second) Pif(hour) now=c(1,(1/60),(1/3600))%*%as.numeric(now[c("hour","minute","second")]) now } filename  srcfilecopy srcfile srcref **  srcref ++  srcref **  srcref   **  srcref   ..  srcref   ..  srcref   JJ  srcref   PP  srcref   srcref  wholeSrcref   srcref { = year as.integer substring Sys.time?@ month@@ day@"@$ hr@(@* minute@.@0 second@2@3 now c if %*%? ( /?@N !?@  as.numeric [ hour minute second current.day function () {#returns current day as integer # &as.integer(substring(Sys.time(),9,10)) }@"@$ current.month function () "{#returns current month as integer # %as.integer(substring(Sys.time(),6,7)) }@@ current.year function () !{#returns current year as integer # %as.integer(substring(Sys.time(),1,4)) }?@ instructions( function () !{# how to use the work functions # .# 1. Run the function work.start -- like this: # # work.start() # 8# when you start working. You may add the task, e.g., # # work.start("email") # 4# 2. Run work.stop when you stop working. Like this: # # work.stop() # ,# 3. Work.plot produces the percentile plot. # C# 4. You must edit save.ws so that it saves the workspace where you D# want it. You can exit R (without saving the workspace) whenever D# you want. Your data will be stored in the saved workspace. The ># workspace is saved whenever you add data to the database. # F# 5. Several other functions (work.task, work.duration, etc.) do other J# useful things. Print a function to see what it does and how to use it # H# 6. The data is stored in the data frame work. Eventually you will want 7# to edit work to include only the data you collect. # F# 7. If you fail to run work.stop when you stop working, the next time 6# you run work.start you will get an error message: # ,# need to fill in most recent duration # F# You can fix the error (that is, fill in the most recent duration) H# with work.duration, giving the duration of the previous work bout. I# For example, if the previous work bout lasted 20 minutes, you write: # # work.duration(20) # }     unknown Au POSIXct POSIXt( function () !{# how to use the work functions # .# 1. Run the function work.start -- like this: # # work.start() # 8# when you start working. You may add the task, e.g., # # work.start("email") # 4# 2. Run work.stop when you stop working. Like this: # # work.stop() # ,# 3. Work.plot produces the percentile plot. # C# 4. You must edit save.ws so that it saves the workspace where you D# want it. You can exit R (without saving the workspace) whenever D# you want. Your data will be stored in the saved workspace. The ># workspace is saved whenever you add data to the database. # F# 5. Several other functions (work.task, work.duration, etc.) do other J# useful things. Print a function to see what it does and how to use it # H# 6. The data is stored in the data frame work. Eventually you will want 7# to edit work to include only the data you collect. # F# 7. If you fail to run work.stop when you stop working, the next time 6# you run work.start you will get an error message: # ,# need to fill in most recent duration # F# You can fix the error (that is, fill in the most recent duration) H# with work.duration, giving the duration of the previous work bout. I# For example, if the previous work bout lasted 20 minutes, you write: # # work.duration(20) # }  srcfilecopy srcfile srcref ( ( ( srcref put )function (..., file = "C:\\temp0.RData") ;{# put functions or data into file to be read later by take # *# file file for transfer # save(...,file=file) } ... file C:\temp0.RData    )function (..., file = "C:\\temp0.RData") ;{# put functions or data into file to be read later by take # *# file file for transfer # save(...,file=file) }  srcfilecopy srcfile srcref , save*++ save.graphs function () { #windows.options(record=TRUE) #.SavedPlots<<-NULL }     unknown Au POSIXct POSIXt function () { #windows.options(record=TRUE) #.SavedPlots<<-NULL }  srcfilecopy srcfile srcref /  / srcref save.ws #function (nm="percentilefeedback") { invisible() .SavedPlots=NULL "lo=paste("C:/",nm,".RData",sep="") save.image(lo) $cat(nm,"workspace saved at",lo,"\n") "cat(as.character(Sys.time()),"\n") } nm percentilefeedback     unknown Aq POSIXct POSIXt #function (nm="percentilefeedback") { invisible() .SavedPlots=NULL "lo=paste("C:/",nm,".RData",sep="") save.image(lo) $cat(nm,"workspace saved at",lo,"\n") "cat(as.character(Sys.time()),"\n") }  srcfilecopy srcfile srcref    2 srcref  2 srcref "" 2 srcref  2 srcref $$ 2 srcref "" 2 srcref 2   2 srcref invisible lo paste C:/1 .RData sep  save.image4 cat1 workspace saved at4  8 as.character   sleep          Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday a tR{Kd^ZrS,MG3^"$_~ GQEz  \(oMT/]b aP:oR 9Y؀LiO8MX`=:\`f6VW6FYJW2Q^@ @X@@@@@@@@`@@8@@X@(@`@@@@x@@@`@@x@@@@@X@@@@(@@@@@@W@@a@@c@n @j@Z@@@@T@<@X@a@b`@d`@b @[@*@W@]@H@[@b`@A@]@`@f@@^@b@a@J@U@@B@]@N@F@8@Q@@@e@ year month day weekday time.up time.up.2 min.slept.2 data.frame row.names 3 41 31 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 311 32 33 34 35 36 37 38 39 40 411 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 take function () 5{# retrieve functions or data from file made by put. # Usage: take() # # (load(file="C:\\temp0.RData",.GlobalEnv) }     unknown AN  POSIXct POSIXt function () 5{# retrieve functions or data from file made by put. # Usage: take() # # (load(file="C:\\temp0.RData",.GlobalEnv) }  srcfilecopy srcfile srcref '' = srcref =  = srcref load+ C:\temp0.RData .GlobalEnv work                                                                                                      9( 1'& 2:! "#2 0'2%7 9-.0!2%'89(010+9 057'9,%(1!/ 84:#/2,) -%.-;8*5-'+  - "9 23#$ +4'%"&+.-(%7$9 ,)-."23/1/   7& )$48*)&(3- 5(-$*1309&5+ & 915/:-- (&,6 %*0%;; ($964) 74 0,;0$4 2;(2!.  1717 (( ,*,75$;!"-/%"8; &33 ,%,7(('6$32(# 45*6.++. :'$ 8/4*9.99;3%)23;*,2 0 !/26+#2 )# 1 62/4!%4+)* $ *21&%)2&1* %.:3 ; 0,'7! * *5  2*93,/(8:(-(, ,/3 $.  #6.;5%+ /3 7 +.7 ;274'.'  /'66;&702;% $/! 527 1'(/(*#*%%*13 &%-/'7867  1 :5(72;;.".('59#9:;$$32#2%3" -#;:8 %/5'  $250"#!6 & %.0"5!!:% 9/+!33-*%:9!%13# +. 8$8- "5. -*!/.",4 2-$)87((-/818 2)(5337%&497 5#  ,+ ,9) *)(8 %)+1(,9,3!;:$8$7.+, , /+!$$940$-398&:$7:/7( /. 2+,8%313*%9( 92 + 3 ,,-2 38%8)/#$ :)0, 7,,/ 8";+;,0 #$6.&%+ 4 %-160, 38* #36!".185!.4/4 33+; !#/-+)5*' (0 (8-. %5/5 95%;)6/ :  %$  5%- 28"7'%: *;49-0. 6 7 test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test@Fwwwws@>Y@@>s33333@9?ꪪ@QDDDDG?@>@B@3@@J33333@D@P@O{@Q@ *@P뻻?􈈈z@L @XDDDDDG@*@>@L,@T?@N;@:wwww@>ٙ@$@.@$@033333@F??@@{@JUUUUZ@V@'wwwwe@Gh@K@"""""@M@@M@Vwwwwz@8@4L??ꪪ@S@P @:&fffff@e)@N@Gffffff@Z@P @:Y@@Ky?􈈈z@DWwwwws@4@CJ?DDDDDS@4j@8UUUUUL@j@#DDDDB@K;@Qə@4@'DDDDD2@C@QȈ@Ffffff@H@_@7s33333@4@.@G@Zə@>@.@I;@@)@@=Y@J@@D@D@4@U@Qj??DDDDDS@>33333@C""""'@6Y@@@AUUUUZ@G@Gwwwwws@0@0@$"""""5@GWwwwws@H(@A@("""""5@CUUUUZ@/wwwwe@@@QM@A@K33333@D @VGwwwwz@I@P@L@,@P @@@A@Hfffff@Fs33333@B]@+"""""5@0@6@9@B@@#@H@5@Dffffff@4@;@Rٙ@L.@A@G @KUUUUZ@>@K@hwwwwl@Sx@9@OUUUUZ@8DDDDN@F333333@?fffff@;@ZDDDD\@ @V@AUUUUZ@E@6@@?@@@Pvfffff@C""""'@KN@*@1@6UUUUUL@KB""""'@?DDDDN@=UUUUL@^@$@^@S@@@Gwwwws@C@6@9UUUUL@N@1@@`@b@A@Cꪪ@T@D@UUUUUS@,@1j@C33333@PS33333@>@4@9wwww@UUUUU]@I@A@Qm@D33333@@HH@D@D{@P@B@R"""" @R @@T@;DDDDDN@.@Z33333@>@3 @/]@B @8DDDDN@R.@AN@D@8@@UUUUUR@@@RUUUUS@R@Y@Pc33333@D@!"""""$@C@4@Gh@.@@@@Os33333@Bٙ@[)@Ls33333@8.@DDDDDD@@Q@,ffffff@Q@Iffffff@>@BDDDD@@4@N@!]@Ffffff@`@333333@f@Cffffff@G@@ *@:*@M@JH@:@Ewwwws@@E7wwwws@>@4@T@*@633333@4DDDDDN@/n@9Q@E@'@Gfffff@4UUUUL@4UUUUUL@?""""@7UUUUUL@O @O&fffff@P@Al@@S33333@N@FȈ@F@>@DWwwwws@4@LWwwwws@4@G@G`@:ꪪ@4@8 @T@>@I@^@_@3ꪪ@R@FJ@5Q@Q@Q@E@4UUUUL@MUUUUZ@D@."""""5@G33333@6@R@E33333@H @A@V@6@AUUUUUZ@8@)L@ffffff@;DDDDN@K@7Y@@j@S;@@fffff@G@9@9j@Bh@Ch@TH@I ?UUUUUa@Q^@7UUUUUL@=ꪪ@@UUUUZ@9@Q33333@DUUUUZ@>wwww@@興@4@0wwww@H@(DDDDD2@8@/]@5.@M興@NUUUUZ@F@DL@>@Q@2]@F@L@d(@6@] @Cn@MUUUUZ@8s33333@A@DDDDDH@0@j=@8@D33333@?j@]@@fffff@H*@E@;s33333@H @Mwwwws@-@f@O[@b@SDDDDG@333333@S]@`z"""".@B7wwwws@O@`UUUUa@$fffff@-*@R+@4@[0@W@K7wwwws@I@<@&UUUUh@Zq@?"""""@C@Aq @U@F@QDDDDG@0@>L@S!@Pffffff@R@M"""""'@8DDDDN@U%UUUUS@7DDDDN@F@C@Y=@F@H@C@[@C @@ٙ@Hٙ@F@@ۻ@F@:n@D=@FȈ@E@M@S*@DDDDD@@Q@5fffff@?.@Z@=n@@ @RUUUUS@R@7@C33333@IDDDDD@@V"""" ?ffffff@+UUUUh@Eʪ@=;@gfffff@Z>@KUUUUZ@:@M@K @?fffff@:UUUUUL@]Ffffff@aDDDD9@K@2DDDDN@LUUUUZ@W@PH@U&fffff@5@ffffff@J33333@L @I@QA@LL@W>@Y@G@5@Qwwwwz@J@:j@C@0@L$DDDD@@3""""@EQ @Sq@a@H@@K@E7wwwws@)wwwwwe@fUUUUa@*@Pp@N@C @P @C @A@b@;@ODDDD@@CuUUUUZ@3""""@:b""""@F @+fffff@Q[@P@YDDDD\@8@S33333@B@?@HUUUUUZ@A,@6DDDDDN@PL@Qj@*@G@@J@=wwww@Qp@4@=b""""@7*@4@nd@Jj@N@<@7H@>@Gٙ@CJ@\k@4fffff@@DDDD@@L @;*@F""""'@M @@I@Lb""""'@S@@H@S"""" @1*@K,@0@C&fffff@-L@>@N@MDDDDD@@+]@*33333@NUUUUZ@9@Gn@K1 @5@Cfffff@F @533333@Swwwwz@1@<@G @H@L@8@D@B@afffff@R@UDDDDG@n 33333@Dwwwws@<@N@@B""""'@;@@=@3H@6@KWwwwws@:s33333@b @0;@=Ȉ@Hwwwws@?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ data.frame work.bonus function(correct.bonus) {#fix bonus %# correct.bonus # "old.bonus=work[nrow(work),"bonus"] (work[nrow(work),"bonus"]<<-correct.bonus 3cat("bonus was",old.bonus,"now",correct.bonus,"\n") work.so.far() save.ws() } correct.bonus     unknown AOn POSIXct POSIXt function(correct.bonus) {#fix bonus %# correct.bonus # "old.bonus=work[nrow(work),"bonus"] (work[nrow(work),"bonus"]<<-correct.bonus 3cat("bonus was",old.bonus,"now",correct.bonus,"\n") work.so.far() save.ws() }  srcfilecopy srcfile srcref "" C srcref (( C srcref 33 C srcref    C srcref     C srcref C   C srcref old.bonus#@ nrow@ bonus <<-#@E@ bonusB8 bonus wasD nowB   work.so.far0 work.dots function(correct.dots=TRUE) {#fix dots # # correct.dots # old.dots=work[nrow(work),"dots"] &work[nrow(work),"dots"]<<-correct.dots 0cat("dots was",old.dots,"now",correct.dots,"\n") work.so.far() save.ws() } correct.dots      unknown AP POSIXct POSIXt function(correct.dots=TRUE) {#fix dots # # correct.dots # old.dots=work[nrow(work),"dots"] &work[nrow(work),"dots"]<<-correct.dots 0cat("dots was",old.dots,"now",correct.dots,"\n") work.so.far() save.ws() }  srcfilecopy srcfile srcref    J srcref && J srcref 00 J srcref     J srcref     J srcref J   J srcref old.dots#@E@ dotsF#@E@ dotsI8 dots wasK nowI  G0 work.duration function (dura) #{#fill in duration in work database # M# dura correct duration earlier time (3-vector of hour, minute, second) # nr=nrow(work) old=work[nr,"duration"] work[nr,"duration"]<<-dura Dcat("duration of",work[nr,"task"],"was",old, "now",dura,"minutes\n") save.ws() } dura     unknown AZ x POSIXct POSIXt function (dura) #{#fill in duration in work database # M# dura correct duration earlier time (3-vector of hour, minute, second) # nr=nrow(work) old=work[nr,"duration"] work[nr,"duration"]<<-dura Dcat("duration of",work[nr,"task"],"was",old, "now",dura,"minutes\n") save.ws() }  srcfilecopy srcfile srcref    N srcref  N srcref  N srcref   DD N srcref     N srcref N   N srcref nrE@ old#@O durationF#@O durationM8 duration of#@O task wasP nowM minutes 0 work.duration.so.far Ofunction (then=work[nrow(work),c("hour.start","minute.start","second.start")]) %{#returns minutes since earlier time. # :# then earlier time (3-vector of hour, minute, second) # di=current()[4:6]-then c(60,1,(1/60))%*%as.numeric(di) } then#@E@ hour.start minute.start second.start di -# :@@R@N? !?@N"S work.erase function () {#erase the last entry in work # work<<-work[-nrow(work),] cat("last row of work erased\n") }     unknown AW POSIXct POSIXt function () {#erase the last entry in work # work<<-work[-nrow(work),] cat("last row of work erased\n") }  srcfilecopy srcfile srcref  W srcref    W srcref W  W srcrefF@#@TE@8 last row of work erased  work.hrs.off function (hrs.off) ?{#set hrs.off (hours taken out of the workday by unusual event) # +# hrs.off hours off # $work[nrow(work),"hrs.off"]<<-hrs.off cat("hrs.off set\n") save.ws() } hrs.off     unknown AOL POSIXct POSIXt function (hrs.off) ?{#set hrs.off (hours taken out of the workday by unusual event) # +# hrs.off hours off # $work[nrow(work),"hrs.off"]<<-hrs.off cat("hrs.off set\n") save.ws() }  srcfilecopy srcfile srcref $$ Z srcref  Z srcref    Z srcref Z   Z srcrefF#@E@ hrs.offY8 hrs.off set 0 work.instructions( function () !{# how to use the work functions # .# 1. Run the function work.start -- like this: # # work.start() # 8# when you start working. You may add the task, e.g., # # work.start("email") # 4# 2. Run work.stop when you stop working. Like this: # # work.stop() # ,# 3. Work.plot produces the percentile plot. # C# 4. You must edit save.ws so that it saves the workspace where you D# want it. You can exit R (without saving the workspace) whenever D# you want. Your data will be stored in the saved workspace. The ># workspace is saved whenever you add data to the database. # F# 5. Several other functions (work.task, work.duration, etc.) do other J# useful things. Print a function to see what it does and how to use it # H# 6. The data is stored in the data frame work. Eventually you will want 7# to edit work to include only the data you collect. # F# 7. If you fail to run work.stop when you stop working, the next time 6# you run work.start you will get an error message: # ,# need to fill in most recent duration # F# You can fix the error (that is, fill in the most recent duration) H# with work.duration, giving the duration of the previous work bout. I# For example, if the previous work bout lasted 20 minutes, you write: # # work.duration(20) # }   ( srcref ( ( ( srcref work.last function () {#print last 5 tasks # 'tail(unique(rev(tail(work$task,15))),8) } tail unique rev] $@ task@.@  work.note function (note) {#fill in note in work database # # note note to be added nr=nrow(work) old=work[nr,"note"] work[nr,"note"]<<-note :cat("note for",work[nr,"task"],"was",old, "now",note,"\n") save.ws() } note     unknown A^qO POSIXct POSIXt function (note) {#fill in note in work database # # note note to be added nr=nrow(work) old=work[nr,"note"] work[nr,"note"]<<-note :cat("note for",work[nr,"task"],"was",old, "now",note,"\n") save.ws() }  srcfilecopy srcfile srcref    d srcref  d srcref  d srcref :: d srcref     d srcref d   d srcrefOE@P#@O noteF#@O notec8 note for#@O task wasP nowc  0 work.plot "function (first.hr=3, dayf=FALSE) <{# plots work efficiency (time spent working/available time) # in various ways. # ># first.hr first hour available to work (if wake up earlier) $# dayf plot efficiency vs day? # 0# 2011.03.27 this system starts (day 62 of work) )# 2011.04.04 add percentile rank to graph 3# 2011.04.08 start plotting final efficiency vs day # save.graphs() work.so.far() (all=work.plot.compute(first.hr=first.hr) ptile=work.plot.compare(all) work.plot.hour(all, ptile=ptile) if(dayf) work.plot.day(all) } first.hr@ dayf      unknown AnB POSIXct POSIXt "function (first.hr=3, dayf=FALSE) <{# plots work efficiency (time spent working/available time) # in various ways. # ># first.hr first hour available to work (if wake up earlier) $# dayf plot efficiency vs day? # 0# 2011.03.27 this system starts (day 62 of work) )# 2011.04.04 add percentile rank to graph 3# 2011.04.08 start plotting final efficiency vs day # save.graphs() work.so.far() (all=work.plot.compute(first.hr=first.hr) ptile=work.plot.compare(all) work.plot.hour(all, ptile=ptile) if(dayf) work.plot.day(all) }  srcfilecopy srcfile srcref     h srcref     h srcref (( h srcref  h srcref    h srcref  h srcref h  h srcref.G all work.plot.computeff ptile work.plot.comparei work.plot.hourikkg work.plot.dayil /function (all=work.plot.compute(), spread = 1) ={# compute the percentile efficiency of the latest time using # times around the given time # G# all work bout by (x,y) matrix with columns "year", "month", etc. 1# spread range of time in each direction to use # last.time=tail(all[,"hour"],1) #last.eff=tail(all[,"efficiency"],1) )later.msk=all[,"hour"]>(last.time-spread) +earlier.msk=all[,"hour"]<(last.time+spread) -sam=all[(later.msk&earlier.msk),"efficiency"] *work.plot.ptile(last.eff,sam[!is.na(sam)]) }ij spread?     unknown Agށ POSIXct POSIXt /function (all=work.plot.compute(), spread = 1) ={# compute the percentile efficiency of the latest time using # times around the given time # G# all work bout by (x,y) matrix with columns "year", "month", etc. 1# spread range of time in each direction to use # last.time=tail(all[,"hour"],1) #last.eff=tail(all[,"efficiency"],1) )later.msk=all[,"hour"]>(last.time-spread) +earlier.msk=all[,"hour"]<(last.time+spread) -sam=all[(later.msk&earlier.msk),"efficiency"] *work.plot.ptile(last.eff,sam[!is.na(sam)]) }  srcfilecopy srcfile srcref  p srcref   ## p srcref   )) p srcref   ++ p srcref   -- p srcref   ** p srcref p  p srcref last.time]#i hour? last.eff]#i efficiency? later.msk >#i hour Tqo earlier.msk <#i hour  +qo sam#i  &su efficiency work.plot.ptiler#x ! is.naxj 2function (first.hr=3,fd.yr=2011,fd.mo=3,fd.da=27) X{# returns matrix of work efficiency (time spent working/available time) vs time of day. 5# column "final" = 0 non-final times, 1 final times. @# column "feedback" = 0 before feedback, 1 after feedback begins # ># first.hr first hour available to work (if wake up earlier) "# fd.yr year feedback started # fd.mo month # fd.da day # day.id=(31*work$month)+work$day feedback.id=(31*fd.mo)+fd.da (feed.num=as.integer(feedback.id<=day.id) u=unique(day.id[work$include]) #feed.num=as.integer(feedback.id<=u) all=matrix(NA,ncol=7,nrow=1) Xdimnames(all)=list(NULL,c("year","month","day","hour", "efficiency","final","feedback")) for(i in 1:length(u)) {  msk=u[i]==day.id  yr=(work$year[msk])[1]  mo=(work$month[msk])[1]  da=(work$day[msk])[1]  feedf=feed.num[i] h all=rbind(all,work.plot.compute.one(yr,mo,da, first.hr=first.hr, today = i==length(u), feedback=feedf)) } all[-1,] }f@ fd.yr@l fd.mo@ fd.da@;      unknown Ai POSIXct POSIXt 2function (first.hr=3,fd.yr=2011,fd.mo=3,fd.da=27) X{# returns matrix of work efficiency (time spent working/available time) vs time of day. 5# column "final" = 0 non-final times, 1 final times. @# column "feedback" = 0 before feedback, 1 after feedback begins # ># first.hr first hour available to work (if wake up earlier) "# fd.yr year feedback started # fd.mo month # fd.da day # day.id=(31*work$month)+work$day feedback.id=(31*fd.mo)+fd.da (feed.num=as.integer(feedback.id<=day.id) u=unique(day.id[work$include]) #feed.num=as.integer(feedback.id<=u) all=matrix(NA,ncol=7,nrow=1) Xdimnames(all)=list(NULL,c("year","month","day","hour", "efficiency","final","feedback")) for(i in 1:length(u)) {  msk=u[i]==day.id  yr=(work$year[msk])[1]  mo=(work$month[msk])[1]  da=(work$day[msk])[1]  feedf=feed.num[i] h all=rbind(all,work.plot.compute.one(yr,mo,da, first.hr=first.hr, today = i==length(u), feedback=feedf)) } all[-1,] }  srcfilecopy srcfile srcref     srcref     srcref   ((  srcref   srcref ##  srcref   srcref XX  srcref   srcref   srcref    srcref day.idw  *@?`@`@ feedback.idw @?~ feed.num <= u^#`@ includei matrix  ncol@E? dimnamesi list year month day hour efficiency final feedback for iU? length    srcref    srcref    srcref    srcref    srcref    srcref h o  srcref    srcref msk ==# yr# #`@? mo# #`@? da# #`@? feedf#i rbindi work.plot.compute.oneff today feedback#iT?/ Lfunction (year=2011,month=4,day=8, first.hr=3, today = FALSE, feedback = 0) ({# return results for one day. Output is "# locations of the plotted points. # # year # month # day # first.hr starting hour # today today? -# feedback 0=no feedback, 1 = some feedback # =day.msk=(work$year==year)&(work$month==month)&(work$day==day) [hr=work$hour.start[day.msk]+(work$minute.start[day.msk]/60)+work$second.start[day.msk]/3600 o=order(hr) #du=((work$duration[day.msk])[o])/60 hr=hr[o] Fm=matrix(c(hr[1],0), ncol = 2,dimnames=list(NULL,c("hour","work.hr"))) m=rbind(m,c(hr[1]+du[1],du[1])) n=length(hr) if(n>1) {  for (i in 2:n){ nr=nrow(m) % m=rbind(m,c(hr[i],m[nr,"work.hr"])) 1 m=rbind(m,c(hr[i]+du[i],m[nr,"work.hr"]+du[i]))  } } if(today) { nr=nrow(m)  now=current(hour=TRUE)  if(is.na(m[nr,"hour"])) {  m[nr,"hour"]=now = m[nr,"work.hr"]=m[nr-1,"work.hr"]+work.duration.so.far()/60  } ' else m=rbind(m,c(now,m[nr,"work.hr"])) } sl=work.sleep(year,month,day) fh=max(first.hr,sl[1]) $if(is.na(sl[2])) avail=m[,"hour"]-fh 3else avail=m[,"hour"]-(fh+(m[,"hour"]>sl[2])*sl[3]) eff=100*m[,"work.hr"]/avail eff[eff>100]=100 n=length(eff) finalf=rep(0:1,times=c(n-1,1)) 9out=cbind(year,month,day,m[,"hour"],eff,finalf, feedback) Wdimnames(out)=list(NULL,c("year","month","day","hour","efficiency","final","feedback")) out }@l@@ f@      unknown Ai s} POSIXct POSIXt/ Lfunction (year=2011,month=4,day=8, first.hr=3, today = FALSE, feedback = 0) ({# return results for one day. Output is "# locations of the plotted points. # # year # month # day # first.hr starting hour # today today? -# feedback 0=no feedback, 1 = some feedback # =day.msk=(work$year==year)&(work$month==month)&(work$day==day) [hr=work$hour.start[day.msk]+(work$minute.start[day.msk]/60)+work$second.start[day.msk]/3600 o=order(hr) #du=((work$duration[day.msk])[o])/60 hr=hr[o] Fm=matrix(c(hr[1],0), ncol = 2,dimnames=list(NULL,c("hour","work.hr"))) m=rbind(m,c(hr[1]+du[1],du[1])) n=length(hr) if(n>1) {  for (i in 2:n){ nr=nrow(m) % m=rbind(m,c(hr[i],m[nr,"work.hr"])) 1 m=rbind(m,c(hr[i]+du[i],m[nr,"work.hr"]+du[i]))  } } if(today) { nr=nrow(m)  now=current(hour=TRUE)  if(is.na(m[nr,"hour"])) {  m[nr,"hour"]=now = m[nr,"work.hr"]=m[nr-1,"work.hr"]+work.duration.so.far()/60  } ' else m=rbind(m,c(now,m[nr,"work.hr"])) } sl=work.sleep(year,month,day) fh=max(first.hr,sl[1]) $if(is.na(sl[2])) avail=m[,"hour"]-fh 3else avail=m[,"hour"]-(fh+(m[,"hour"]>sl[2])*sl[3]) eff=100*m[,"work.hr"]/avail eff[eff>100]=100 n=length(eff) finalf=rep(0:1,times=c(n-1,1)) 9out=cbind(year,month,day,m[,"hour"],eff,finalf, feedback) Wdimnames(out)=list(NULL,c("year","month","day","hour","efficiency","final","feedback")) out }  srcfilecopy srcfile srcref   ==  srcref   [[  srcref     srcref ##  srcref   srcref FF  srcref   srcref     srcref   srcref #  srcref $$  srcref %%  srcref &'33  srcref ((  srcref ))  srcref **    srcref ++  srcref ,,99  srcref --WW  srcref ..  srcref  /  srcref day.mskyy `@ `@ `@ww#`@ hour.start !#`@ minute.start@N!#`@ second.start@  o order du! # #`@ duration@N# m#?@ hour work.hrw#?#?#? nt?      srcref    srcref    srcrefU@    srcref    srcref %3  srcref 1?  srcref     srcrefOE##O work.hrw##w#O work.hr#      srcref    srcref    srcref "' .  srcref  #  srcrefOE |#O hour  !!  srcref    srcref   =K  srcref  !   srcref#O hour#O work.hrw#TO? work.hr!Q@N#O work.hr sl work.sleep fh maxf#?|#@ availT# hourT# hour w t# hour#@#@ eff!@Y# work.hr#t@Y@Y finalf repU? timesT?? out cbind# hour year month day hour efficiency final feedbackn Efunction (all=work.plot.compute(), cv=c("red","black"),now.cut=TRUE) N{# plot work data vs day in 2 ways: efficiency vs day, ptile efficiency vs day /# Efficiency is the last efficiency of the day. # O# all matrix with columns year, month, day, hour, efficiency, final, feedback .# (final = 0 or 1, 1 = last time of day) 0# (feedback = 0: no feedback, 1: feedback) # cv color vector '# now.cut don't plot most recent day? # Aoldpar=par(las = 1, cex = 1.8, mgp=c(2.4,.7,0), mar = c(6,5,3,5)) on.exit(par(oldpar)) #last.mask=as.logical(all[,"final"]) !last.mask[is.na(last.mask)]=FALSE y=all[last.mask,"year"] m=all[last.mask,"month"] d=all[last.mask,"day"] .feedf=head(all[last.mask,"feedback"],-now.cut) 9dv=head(as.Date(paste(y,m,d),format="%Y %m %d"),-now.cut) .eff=head(all[last.mask,"efficiency"],-now.cut) Fplot(dv,eff,xlab="Date",ylab="Efficiency (percent)",pch = 16,type="n") 2points(dv,eff,pch = 16, cex = 1.6,col=cv[1+feedf]) Slines(loess.smooth(dv[feedf==0],eff[feedf==0], span=100, degree=1),lwd=7,col=cv[1]) Rlines(loess.smooth(dv[feedf==1],eff[feedf==1],span=100, degree=1),lwd=7,col=cv[2]) &title("Efficiency vs. Day", line = .7) 4lg=c("no percentile feedback","percentile feedback") 1legend("topleft",pch=16,col=cv,legend=lg,bty="n") }ij cv red black now.cut      unknown AnBa POSIXct POSIXt Efunction (all=work.plot.compute(), cv=c("red","black"),now.cut=TRUE) N{# plot work data vs day in 2 ways: efficiency vs day, ptile efficiency vs day /# Efficiency is the last efficiency of the day. # O# all matrix with columns year, month, day, hour, efficiency, final, feedback .# (final = 0 or 1, 1 = last time of day) 0# (feedback = 0: no feedback, 1: feedback) # cv color vector '# now.cut don't plot most recent day? # Aoldpar=par(las = 1, cex = 1.8, mgp=c(2.4,.7,0), mar = c(6,5,3,5)) on.exit(par(oldpar)) #last.mask=as.logical(all[,"final"]) !last.mask[is.na(last.mask)]=FALSE y=all[last.mask,"year"] m=all[last.mask,"month"] d=all[last.mask,"day"] .feedf=head(all[last.mask,"feedback"],-now.cut) 9dv=head(as.Date(paste(y,m,d),format="%Y %m %d"),-now.cut) .eff=head(all[last.mask,"efficiency"],-now.cut) Fplot(dv,eff,xlab="Date",ylab="Efficiency (percent)",pch = 16,type="n") 2points(dv,eff,pch = 16, cex = 1.6,col=cv[1+feedf]) Slines(loess.smooth(dv[feedf==0],eff[feedf==0], span=100, degree=1),lwd=7,col=cv[1]) Rlines(loess.smooth(dv[feedf==1],eff[feedf==1],span=100, degree=1),lwd=7,col=cv[2]) &title("Efficiency vs. Day", line = .7) 4lg=c("no percentile feedback","percentile feedback") 1legend("topleft",pch=16,col=cv,legend=lg,bty="n") }  srcfilecopy srcfile srcref   AA  srcref     srcref   ##  srcref !!  srcref   srcref   srcref   srcref ..  srcref 99  srcref ..  srcref FF  srcref 22  srcref SS  srcref RR  srcref &&  srcref 44  srcref 11  srcref    srcref oldpar par las? cex? mgp@333333?ffffff mar@@@@ on.exit last.mask as.logical#i final#|  y#i year#i month d#i day head#i feedbackT dv as.Date5 format %Y %m %dT#i efficiencyT plot xlab Date ylab Efficiency (percent) pch@0 type n points@0? col#w? loess.smooth## span@Y degree? lwd@#?#?#?@Y?@#@ title Efficiency vs. Day line?ffffff lg no percentile feedback percentile feedback legend topleft@0 bty nm Vfunction (all=work.plot.compute(),first.hr=3,last.hr=23.5, legendf=FALSE, ptile = -1) L{# plots work efficiency (time spent working/available time) vs time of day. # 5# all matrix of dates, times, and efficiencies # last.hr last hour available ## legendf include figure legend? # today.color="brown" 8cm=matrix(c("blue","green","red","black"),nrow=2,ncol=2) Bdimnames(cm)=list(c("baseline","feedback"),c("non-final","final")) hr.range=c(first.hr,last.hr) *oldpar=par(las=1,cex = 1.8, mgp=c(2,.5,0)) on.exit(par(oldpar)) %day.id=(31*all[,"month"])+all[,"day"] u=unique(day.id) n=length(u) tplot(first.hr:last.hr,ylim=c(0,100),ylab="Efficiency (percent)",xlab = "Time of Day (hr)",xlim = hr.range,type="n") for(i in 1:n) {  all.part=all[u[i]==day.id,] 0 if(all.part[1,"feedback"]<1) cv=cm["baseline",]  else cv=cm["feedback",] \ work.plot.hour.one(all.part,today=(i==n), first.hr=first.hr, cv=cv,today.color=today.color) } lt=c("percentile feedback (final)","percentile feedback (non-final)","no percentile feedback (final)","no percentile feedback (non-final)","today") Hif(legendf) legend("topright",legend=lt,col=cv,pch=16,bty="n", cex = .8) 7else mtext(ptile, adj= .97, padj=1, cex = 4, line = -1) Ptitle("Efficiency (time spent working/available time) vs Time of Day",line = .7) }ijf@ last.hr@7 legendf kT?     unknown AnV` POSIXct POSIXt Vfunction (all=work.plot.compute(),first.hr=3,last.hr=23.5, legendf=FALSE, ptile = -1) L{# plots work efficiency (time spent working/available time) vs time of day. # 5# all matrix of dates, times, and efficiencies # last.hr last hour available ## legendf include figure legend? # today.color="brown" 8cm=matrix(c("blue","green","red","black"),nrow=2,ncol=2) Bdimnames(cm)=list(c("baseline","feedback"),c("non-final","final")) hr.range=c(first.hr,last.hr) *oldpar=par(las=1,cex = 1.8, mgp=c(2,.5,0)) on.exit(par(oldpar)) %day.id=(31*all[,"month"])+all[,"day"] u=unique(day.id) n=length(u) tplot(first.hr:last.hr,ylim=c(0,100),ylab="Efficiency (percent)",xlab = "Time of Day (hr)",xlim = hr.range,type="n") for(i in 1:n) {  all.part=all[u[i]==day.id,] 0 if(all.part[1,"feedback"]<1) cv=cm["baseline",]  else cv=cm["feedback",] \ work.plot.hour.one(all.part,today=(i==n), first.hr=first.hr, cv=cv,today.color=today.color) } lt=c("percentile feedback (final)","percentile feedback (non-final)","no percentile feedback (final)","no percentile feedback (non-final)","today") Hif(legendf) legend("topright",legend=lt,col=cv,pch=16,bty="n", cex = .8) 7else mtext(ptile, adj= .97, padj=1, cex = 4, line = -1) Ptitle("Efficiency (time spent working/available time) vs Time of Day",line = .7) }  srcfilecopy srcfile srcref   srcref   88  srcref   BB  srcref     srcref   **  srcref     srcref %%  srcref   srcref     srcref ss  srcref   srcref   srcref 77  srcref PP  srcref    srcref today.color brown cm blue green red blackE@@ baseline feedback non-final final hr.rangef??@?w @?#i month#i day^Uf ylim@Y Efficiency (percent) Time of Day (hr) xlim nU?    srcref  #  srcref    srcref \ c  srcref    srcref all.part#i#v#? feedback?# baseline# feedback work.plot.hour.one ff lt percentile feedback (final) percentile feedback (non-final) no percentile feedback (final) "no percentile feedback (non-final) today topright@0 n?陙 mtextk adj? =p  padj?@T? =Efficiency (time spent working/available time) vs Time of Day?ffffff Qfunction (all.part, first.hr=3,today = FALSE, cv=rainbow(2),today.color="brown") 7{# plot results for one day (efficiency vs time of day) # $# all.part matrix with days to plot # today most recent day? 6# cv colors to use (non-final,final) for points -# today.color color to use for line (today) # Tif(today) lines(all.part[,"hour"],all.part[,"efficiency"],lwd = 5,col = today.color) selse points(all.part[,"hour"],all.part[,"efficiency"],pch = 16, cex = 1, col = rep(cv,times=c(nrow(all.part)-1,1))) }f@  rainbow@ brown     unknown Ag POSIXct POSIXt Qfunction (all.part, first.hr=3,today = FALSE, cv=rainbow(2),today.color="brown") 7{# plot results for one day (efficiency vs time of day) # $# all.part matrix with days to plot # today most recent day? 6# cv colors to use (non-final,final) for points -# today.color color to use for line (today) # Tif(today) lines(all.part[,"hour"],all.part[,"efficiency"],lwd = 5,col = today.color) selse points(all.part[,"hour"],all.part[,"efficiency"],pch = 16, cex = 1, col = rep(cv,times=c(nrow(all.part)-1,1))) }  srcfilecopy srcfile srcref   ss  srcref     srcref# hour# efficiency@# hour# efficiency@0?TE??z function (x,samp) <{# return the "continuous" percentile of x compared to samp. ;# Finds the percentile of the values less and more than x, D# then interpolates. If the percentile of 5 is 10 and the percentile 0# of 10 is 20, and x = 7, then the result is 14. # # x target value # samp comparison sample # if(x==max(samp)) return(100) low=max(samp[x>samp]) high=min(samp[x=samp)/n high.qtile=sum(high>=samp)/n frac=(x-low)/(high-low) 2round(100*(low.qtile+frac*(high.qtile-low.qtile))) } x samp return@Y low#t high min#v low.qtile! sum >= high.qtile! frac! T T round@Y w T work.recent function () {work.last() }     unknown A[(hj POSIXct POSIXt function () {work.last() }  srcfilecopy srcfile srcref     srcref    srcref\ work.restart function (...) {# restart task # # work<<-work[-nrow(work),] work.start(...) }*     unknown AZO POSIXct POSIXt function (...) {# restart task # # work<<-work[-nrow(work),] work.start(...) }  srcfilecopy srcfile srcref   srcref   srcref    srcrefF@#@TE@ work.start* work.set.types function () {#set data types !work$year<<-as.integer(work$year) #work$month<<-as.integer(work$month) work$day<<-as.integer(work$day) -work$hour.start<<-as.integer(work$hour.start) 1work$minute.start<<-as.integer(work$minute.start) 1work$second.start<<-as.integer(work$second.start) #work$task<<-as.character(work$task) +work$eagerness<<-as.integer(work$eagerness) #work$bonus<<-as.integer(work$bonus) !work$goal<<-as.integer(work$goal) !work$dots<<-as.logical(work$dots) )work$duration<<-as.numeric(work$duration) 'work$hrs.off<<-as.numeric(work$hrs.off) 'work$include<<-as.logical(work$include) #work$note<<-as.character(work$note) row.names(work)<<-NULL }     unknown Ac& POSIXct POSIXt function () {#set data types !work$year<<-as.integer(work$year) #work$month<<-as.integer(work$month) work$day<<-as.integer(work$day) -work$hour.start<<-as.integer(work$hour.start) 1work$minute.start<<-as.integer(work$minute.start) 1work$second.start<<-as.integer(work$second.start) #work$task<<-as.character(work$task) +work$eagerness<<-as.integer(work$eagerness) #work$bonus<<-as.integer(work$bonus) !work$goal<<-as.integer(work$goal) !work$dots<<-as.logical(work$dots) )work$duration<<-as.numeric(work$duration) 'work$hrs.off<<-as.numeric(work$hrs.off) 'work$include<<-as.logical(work$include) #work$note<<-as.character(work$note) row.names(work)<<-NULL }  srcfilecopy srcfile srcref !!  srcref ##  srcref   srcref --  srcref 11  srcref 11  srcref   ##  srcref   ++  srcref   ##  srcref   !!  srcref   !!  srcref ))  srcref ''  srcref ''  srcref ##  srcref   srcref    srcrefF`@`@F`@`@F`@`@F`@`@F`@`@F`@`@F`@a9`@aF`@ eagerness`@F`@ bonus`@F`@ goal`@F`@ dots`@F`@"`@F`@Y"`@YF`@`@F`@c9`@cF;@ 1function (year=2011,month=3,day=29, default = 3) @{# return wake-up time (in hr, e.g., 6.25) for given day. Vector G# includes time up, time up 2, and minutes slept 2. If no second sleep, D# last two values are NA. If data is missing, returns default value. # # year # month # day # @target.date=(as.Date(paste(year,month,day),format="%Y %m %d"))-1 Fdys=as.Date(paste(sleep$year,sleep$month,sleep$day),format="%Y %m %d") @t=sleep[dys==target.date,c("time.up","time.up.2","min.slept.2")] )if(nrow(t[1])<1) return(c(default,NA,NA)) $t[1:2]=t[1:2]%/%100+(t[1:2]%%100)/60 if(!is.na(t[1])) {  if(t[1]>10) t[1]=t[1]-12 } t[3]=t[3]/60 as.numeric(t) }@l@@= default@      unknown Ai֊ POSIXct POSIXt 1function (year=2011,month=3,day=29, default = 3) @{# return wake-up time (in hr, e.g., 6.25) for given day. Vector G# includes time up, time up 2, and minutes slept 2. If no second sleep, D# last two values are NA. If data is missing, returns default value. # # year # month # day # @target.date=(as.Date(paste(year,month,day),format="%Y %m %d"))-1 Fdys=as.Date(paste(sleep$year,sleep$month,sleep$day),format="%Y %m %d") @t=sleep[dys==target.date,c("time.up","time.up.2","min.slept.2")] )if(nrow(t[1])<1) return(c(default,NA,NA)) $t[1:2]=t[1:2]%/%100+(t[1:2]%%100)/60 if(!is.na(t[1])) {  if(t[1]>10) t[1]=t[1]-12 } t[3]=t[3]/60 as.numeric(t) }  srcfilecopy srcfile srcref   @@  srcref   FF  srcref   @@  srcref   ))  srcref $$  srcref   srcref     srcref     srcref    srcref target.dateT 5 %Y %m %d? dys5`:`:`: %Y %m %d t#: time.up time.up.2 min.slept.2vE#??  #U?@w %/%#U?@@Y!  %%#U?@@Y@N{|#?    srcref    srcref    srcreft#?@$#?T#?@(#@!#@@N"G $function (thisf=TRUE, datef = TRUE) @{#show minutes worked so far. If work is in progress, gives both @#length of current bout and total time. If work not in progress, C#gives only total time. Invisibly returns duration of current bout. # ,# thisf print duration of the current task # datef print time and date # du=work.duration.so.far() Wmsk=(current.year()==work$year)&(current.month()==work$month)&(current.day()==work$day) ;all=sum(work$duration[msk],na.rm=TRUE)+sum(work$bonus[msk]) 5working.now=is.na(tail(work$duration,1))#working now? if(working.now) { if(thisf) { < if(1==round(du)) cat("1 minute of",tail(work$task,1),"\n") 9 else cat(round(du),"minutes of",tail(work$task,1),"\n")  } all=all+du } !cat(round(all),"minutes today\n") ,if(datef) cat(as.character(Sys.time()),"\n") invisible(du) } thisf  datef       unknown AqV POSIXct POSIXt $function (thisf=TRUE, datef = TRUE) @{#show minutes worked so far. If work is in progress, gives both @#length of current bout and total time. If work not in progress, C#gives only total time. Invisibly returns duration of current bout. # ,# thisf print duration of the current task # datef print time and date # du=work.duration.so.far() Wmsk=(current.year()==work$year)&(current.month()==work$month)&(current.day()==work$day) ;all=sum(work$duration[msk],na.rm=TRUE)+sum(work$bonus[msk]) 5working.now=is.na(tail(work$duration,1))#working now? if(working.now) { if(thisf) { < if(1==round(du)) cat("1 minute of",tail(work$task,1),"\n") 9 else cat(round(du),"minutes of",tail(work$task,1),"\n")  } all=all+du } !cat(round(all),"minutes today\n") ,if(datef) cat(as.character(Sys.time()),"\n") invisible(du) }  srcfilecopy srcfile srcref     srcref   WW  srcref   ;;  srcref   ((  srcref    srcref !!  srcref ,,  srcref     srcref    srcrefQyy &`@ %`@ $`@iw#`@ na.rm #`@ working.now|]`@?      srcref    srcref    srcref    srcref      srcref 9G  srcref     srcref?8 1 minute of]`@a?  8 minutes of]`@a?  iwi8i minutes today 89  3' function (task=1,hour,minute,eagerness=NA,bonus=0,offset=0,goal=NA,hrs.off=0,dots=FALSE,location="apartment",include=TRUE,note="") {#Track work data. # H# task task starting (integers refer to items on list of recent H# tasks, with 1 = most recent, 2 = next most recent, etc.) # hour when started # minute # bonus bonus minutes ?# offset decrease starting time by this amount (minutes) # goal goal (minutes) 3# hrs.off hours spent doing something unusual -# dots used dots to measure progress # location location of work "# include include this bout? # last.tasks=work.last() 6if(is.numeric(task)) task=last.tasks[as.integer(task)] cu=current() if(!missing(hour)){  cu["hour"]=hour  cu["minute"]=minute } lnew.line=c(cu,task,duration=NA,eagerness=eagerness,bonus=bonus,goal=goal,dots,location,hrs.off,include,note) 8new.line["minute"]=as.integer(new.line["minute"])-offset (while(as.integer(new.line["minute"])<0){ 1 new.line["hour"]=as.integer(new.line["hour"])-1 6 new.line["minute"]=60+as.integer(new.line["minute"]) } /br=work.duration.so.far()-tail(work$duration,1)  srcfilecopy srcfile srcref   srcref 66  srcref     srcref   srcref ll  srcref 88  srcref   srcref //  srcref <<  srcref   srcref      srcref !!  srcref ""  srcref ##44  srcref $$  srcref %%    srcref &&    srcref  '  srcref last.tasks\ is.numericaa#a cu{ missing    srcref    srcref    srcref    srcref#  hour#  minute new.line a Yc#  minuteT#  minute whilev#  minute  ((((  srcref 1?  srcref 6D  srcref    srcref#  hourT#  hour?#  minutew@N#  minute brTQ]`@?|  $need to fill in most recent durationv  w  @8@N8  minutes break F@@ 8a started at substr@(@0  G 0e work.stop 4function (duration, note, bonus, offset=0, add = 0) J{# mark stop of work bout by updating work. Writes bout duration into last #row of work. # # duration # note # bonus # dura supply duration ## offset subtract from duration # add add to duration # nr=nrow(work) )if(!missing(note)) work[nr,"note"]<<-note ,if(!missing(bonus)) work[nr,"bonus"]<<-bonus Cif(missing(duration)) duration<-work.duration.so.far()+(add-offset) cat(work[nr,"task"],"stopped\n") )cat("lasted",round(duration),"minutes\n") work[nr,"duration"]<<-duration work.so.far(thisf=FALSE) work.set.types() save.ws() work.plot() }c add      unknown Ai[L POSIXct POSIXt 4function (duration, note, bonus, offset=0, add = 0) J{# mark stop of work bout by updating work. Writes bout duration into last #row of work. # # duration # note # bonus # dura supply duration ## offset subtract from duration # add add to duration # nr=nrow(work) )if(!missing(note)) work[nr,"note"]<<-note ,if(!missing(bonus)) work[nr,"bonus"]<<-bonus Cif(missing(duration)) duration<-work.duration.so.far()+(add-offset) cat(work[nr,"task"],"stopped\n") )cat("lasted",round(duration),"minutes\n") work[nr,"duration"]<<-duration work.so.far(thisf=FALSE) work.set.types() save.ws() work.plot() }  srcfilecopy srcfile srcref      srcref   ))  srcref ,,  srcref CC  srcref     srcref ))  srcref   srcref   srcref   srcref     srcref     srcref    srcrefOE@{ cF#@O notec{ F#@O bonus  <-wQ T8#@O task stopped 8 lasted minutes F#@O durationG 0e work.switch function (new.task) "{#switch from one task to another. # work.stop() work.start(task=new.task) } new.task     unknown AN POSIXct POSIXt function (new.task) "{#switch from one task to another. # work.stop() work.start(task=new.task) }  srcfilecopy srcfile srcref     srcref   srcref    srcrefa work.task function(correct.task) {#fix task $# correct.task # old.task=work[nrow(work),"task"] &work[nrow(work),"task"]<<-correct.task 0cat("task was",old.task,"now",correct.task,"\n") save.ws() } correct.task     unknown AOw POSIXct POSIXt function(correct.task) {#fix task $# correct.task # old.task=work[nrow(work),"task"] &work[nrow(work),"task"]<<-correct.task 0cat("task was",old.task,"now",correct.task,"\n") save.ws() }  srcfilecopy srcfile srcref     srcref &&  srcref 00  srcref     srcref     srcref old.task#@E@ taskF#@E@ task8 task was now  0 work.version function () {# Last modified 2011 May 20 }     unknown Au  POSIXct POSIXt function () {# Last modified 2011 May 20 }  srcfilecopy srcfile srcref    srcref work.whole function (task,hour,minute=0,duration,eagerness=NA,include=TRUE,bonus=0,goal=NA,hrs.off=0,dots=FALSE,location="apartment",note="") <{#Add whole task -- starting time, duration -- to work data. # :# task task starting (if blank, same as previous) !# hour hour task started ## minute minute task started ## duration minutes task lasted # bonus bonus minutes # goal goal (minutes) # hrs.off -# dots used dots to measure progress # location location of work # include include this? # note # &if(missing(task)) task=last(work$task) [new.line=c(current(),task,duration,eagerness,bonus,goal,dots,location,hrs.off,include,note) 4if(!missing(hour)) new.line["hour"]=as.integer(hour) :if(!missing(minute)) new.line["minute"]=as.integer(minute) work<<-rbind(work,new.line) work.set.types() %work.so.far(thisf=FALSE, datef=FALSE) save.ws() }a   Y  apartmentc       unknown Af- POSIXct POSIXt function (task,hour,minute=0,duration,eagerness=NA,include=TRUE,bonus=0,goal=NA,hrs.off=0,dots=FALSE,location="apartment",note="") <{#Add whole task -- starting time, duration -- to work data. # :# task task starting (if blank, same as previous) !# hour hour task started ## minute minute task started ## duration minutes task lasted # bonus bonus minutes # goal goal (minutes) # hrs.off -# dots used dots to measure progress # location location of work # include include this? # note # &if(missing(task)) task=last(work$task) [new.line=c(current(),task,duration,eagerness,bonus,goal,dots,location,hrs.off,include,note) 4if(!missing(hour)) new.line["hour"]=as.integer(hour) :if(!missing(minute)) new.line["minute"]=as.integer(minute) work<<-rbind(work,new.line) work.set.types() %work.so.far(thisf=FALSE, datef=FALSE) save.ws() }  srcfilecopy srcfile srcref &&  srcref [[  srcref 44  srcref ::  srcref   srcref   srcref %%  srcref     srcref    srcref aa last`@a aYc{ #  hour{ #  minuteF@@ G  0