Sneeze Tracking: Year One
Reports from my first year of sneeze tracking.
- Start Date: April 23, 2017
- End Date: April 22, 2018
- Total Sneezes: 927
Reports
- Totals
- Sneezes in a Single Day
- Sun, Mon, Tue, Wed, Thu, Fri, Sat
- Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
- Sneezes in a Single Hour
- Consecutive Day Streaks:
- Spans:
- Appendix
Sneezes By Month
year |
month |
sneezes |
2017 |
4 |
29 |
2017 |
5 |
76 |
2017 |
6 |
61 |
2017 |
7 |
69 |
2017 |
8 |
73 |
2017 |
9 |
65 |
2017 |
10 |
82 |
2017 |
11 |
103 |
2017 |
12 |
74 |
2018 |
1 |
114 |
2018 |
2 |
57 |
2018 |
3 |
76 |
2018 |
4 |
48 |
back to top |
|
|
Sneezes By Week
year |
week |
count |
2017 |
16 |
6 |
2017 |
17 |
23 |
2017 |
18 |
17 |
2017 |
19 |
14 |
2017 |
20 |
27 |
2017 |
21 |
12 |
2017 |
22 |
13 |
2017 |
23 |
10 |
2017 |
24 |
13 |
2017 |
25 |
22 |
2017 |
26 |
13 |
2017 |
27 |
16 |
2017 |
28 |
13 |
2017 |
29 |
17 |
2017 |
30 |
19 |
2017 |
31 |
11 |
2017 |
32 |
10 |
2017 |
33 |
26 |
2017 |
34 |
16 |
2017 |
35 |
17 |
2017 |
36 |
22 |
2017 |
37 |
21 |
2017 |
38 |
12 |
2017 |
39 |
3 |
2017 |
40 |
13 |
2017 |
41 |
22 |
2017 |
42 |
17 |
2017 |
43 |
26 |
2017 |
44 |
24 |
2017 |
45 |
17 |
2017 |
46 |
33 |
2017 |
47 |
24 |
2017 |
48 |
14 |
2017 |
49 |
26 |
2017 |
50 |
9 |
2017 |
51 |
13 |
2017 |
52 |
21 |
2018 |
1 |
69 |
2018 |
2 |
11 |
2018 |
3 |
15 |
2018 |
4 |
16 |
2018 |
5 |
16 |
2018 |
6 |
22 |
2018 |
7 |
7 |
2018 |
8 |
9 |
2018 |
9 |
10 |
2018 |
10 |
12 |
2018 |
11 |
36 |
2018 |
12 |
12 |
2018 |
13 |
13 |
2018 |
14 |
9 |
2018 |
15 |
20 |
2018 |
16 |
18 |
back to top |
|
|
Sneezes by Day of Week
day |
sneezes per day |
sneezes |
days |
Sunday |
2.80 |
126 |
45 |
Monday |
2.71 |
122 |
45 |
Tuesday |
2.60 |
122 |
47 |
Wednesday |
2.48 |
99 |
40 |
Thursday |
3.93 |
165 |
42 |
Friday |
2.83 |
130 |
46 |
Saturday |
3.33 |
163 |
49 |
back to top |
|
|
|
Most Sneezes in a Single Day
date |
sneezes |
2018-01-04 |
42 |
2017-04-24 |
12 |
2018-01-03 |
9 |
2018-03-16 |
9 |
2017-05-19 |
8 |
2017-09-12 |
8 |
back to top |
|
Most Sneezes in a Single Sunday
date |
sneezes |
2017-09-17 |
7 |
2017-11-05 |
7 |
2017-12-10 |
7 |
2017-04-23 |
6 |
2018-04-15 |
6 |
back to top |
|
Most Sneezes in a Single Monday
date |
sneezes |
2017-04-24 |
12 |
2017-08-21 |
6 |
2017-11-27 |
6 |
Several Tied |
5 |
back to top |
|
Most Sneezes in a Single Tuesday
date |
sneezes |
2017-09-12 |
8 |
2017-10-10 |
5 |
2017-11-14 |
5 |
2018-01-02 |
5 |
2018-02-06 |
5 |
back to top |
|
Most Sneezes in a Single Wednesday
date |
sneezes |
2018-01-03 |
9 |
2018-03-14 |
6 |
Several Tied |
5 |
back to top |
|
Most Sneezes in a Single Thursday
date |
sneezes |
2018-01-04 |
42 |
2018-03-15 |
7 |
2017-09-07 |
6 |
2017-11-16 |
6 |
Several Tied |
5 |
back to top |
|
Most Sneezes in a Single Friday
date |
sneezes |
2018-03-16 |
9 |
2017-05-19 |
8 |
2017-10-27 |
6 |
2017-12-08 |
6 |
Three Tied |
5 |
back to top |
|
Most Sneezes in a Single Saturday
date |
sneezes |
2017-05-20 |
7 |
2017-08-19 |
7 |
Four Tied |
6 |
back to top |
|
Most Sneezes in a Single Day, January
date |
sneezes |
2018-01-04 |
42 |
2018-01-03 |
9 |
2018-01-02 |
5 |
2018-01-05 |
5 |
2018-01-10 |
5 |
2018-01-27 |
5 |
2018-01-01 |
4 |
2018-01-18 |
4 |
back to top |
|
Most Sneezes in a Single Day, February
date |
sneezes |
2018-02-10 |
6 |
2018-02-03 |
5 |
2018-02-06 |
5 |
2018-02-04 |
4 |
2018-02-08 |
4 |
2018-02-11 |
3 |
2018-02-27 |
3 |
2018-02-01 |
2 |
back to top |
|
Most Sneezes in a Single Day, March
date |
sneezes |
2018-03-16 |
9 |
2018-03-15 |
7 |
2018-03-14 |
6 |
2018-03-17 |
6 |
2018-03-18 |
4 |
2018-03-19 |
4 |
2018-03-04 |
3 |
2018-03-05 |
3 |
back to top |
|
Most Sneezes in a Single Day, April
date |
sneezes |
2017-04-24 |
12 |
2017-04-23 |
6 |
2018-04-15 |
6 |
2018-04-19 |
5 |
2018-04-12 |
4 |
2018-04-13 |
4 |
2018-04-14 |
4 |
2018-04-21 |
4 |
back to top |
|
Most Sneezes in a Single Day, May
date |
sneezes |
2017-05-19 |
8 |
2017-05-20 |
7 |
2017-05-06 |
5 |
2017-05-12 |
5 |
2017-05-22 |
5 |
2017-05-02 |
4 |
2017-05-21 |
4 |
2017-05-09 |
3 |
back to top |
|
Most Sneezes in a Single Day, June
date |
sneezes |
2017-06-24 |
6 |
2017-06-03 |
4 |
2017-06-08 |
4 |
2017-06-17 |
4 |
2017-06-19 |
4 |
2017-06-21 |
3 |
2017-06-23 |
3 |
2017-06-25 |
3 |
back to top |
|
Most Sneezes in a Single Day, July
date |
sneezes |
2017-07-03 |
5 |
2017-07-27 |
5 |
2017-07-06 |
4 |
2017-07-15 |
4 |
2017-07-18 |
4 |
2017-07-19 |
4 |
2017-07-25 |
4 |
2017-07-01 |
3 |
back to top |
|
Most Sneezes in a Single Day, August
date |
sneezes |
2017-08-19 |
7 |
2017-08-21 |
6 |
2017-08-17 |
5 |
2017-08-05 |
4 |
2017-08-14 |
4 |
2017-08-26 |
4 |
2017-08-04 |
3 |
2017-08-11 |
3 |
back to top |
|
Most Sneezes in a Single Day, September
date |
sneezes |
2017-09-12 |
8 |
2017-09-17 |
7 |
2017-09-07 |
6 |
2017-09-06 |
5 |
2017-09-08 |
4 |
2017-09-24 |
4 |
2017-09-01 |
3 |
2017-09-05 |
3 |
back to top |
|
Most Sneezes in a Single Day, October
date |
sneezes |
2017-10-27 |
6 |
2017-10-10 |
5 |
2017-10-23 |
5 |
2017-10-03 |
4 |
2017-10-13 |
4 |
2017-10-14 |
4 |
2017-10-18 |
4 |
2017-10-22 |
4 |
back to top |
|
Most Sneezes in a Single Day, November
date |
sneezes |
2017-11-05 |
7 |
2017-11-04 |
6 |
2017-11-16 |
6 |
2017-11-27 |
6 |
2017-11-06 |
5 |
2017-11-13 |
5 |
2017-11-14 |
5 |
2017-11-15 |
5 |
back to top |
|
Most Sneezes in a Single Day, December
date |
sneezes |
2017-12-10 |
7 |
2017-12-08 |
6 |
2017-12-09 |
5 |
2017-12-27 |
5 |
2017-12-07 |
4 |
2017-12-16 |
3 |
2017-12-21 |
3 |
2017-12-22 |
3 |
back to top |
|
Most Sneezes in a Single Hour (pacific time)
date |
hour |
sneezes |
2018-01-04 |
7 |
7 |
2018-01-04 |
8 |
5 |
2018-01-04 |
14 |
5 |
2018-01-03 |
20 |
4 |
2018-01-04 |
12 |
4 |
2018-01-04 |
17 |
4 |
back to top |
|
|
Most Consecutive Days with 1+ Sneeze
start |
end |
streak |
2017-06-08 |
2017-07-04 |
27 |
2017-10-06 |
2017-10-31 |
26 |
2017-12-21 |
2018-01-08 |
19 |
2017-11-02 |
2017-11-19 |
18 |
2018-01-26 |
2018-02-12 |
18 |
2018-03-04 |
2018-03-21 |
18 |
back to top |
|
|
Most Consecutive Days with 0 Sneezes
start |
end |
streak |
2017-09-27 |
2017-09-29 |
3 |
2018-04-08 |
2018-04-10 |
3 |
2017-05-27 |
2017-05-28 |
2 |
2017-07-31 |
2017-08-01 |
2 |
2017-10-04 |
2017-10-05 |
2 |
2017-12-17 |
2017-12-18 |
2 |
back to top |
|
|
Most Sneezes in a Five-Day Span
start |
end |
sneezes |
2018-01-01 |
2018-01-05 |
65 |
2018-01-02 |
2018-01-06 |
64 |
2017-12-31 |
2018-01-04 |
63 |
2018-01-03 |
2018-01-07 |
60 |
2018-01-04 |
2018-01-08 |
52 |
back to top |
|
|
Appendix
the 2018 file was in progress, I copied the current year file from: My Drive/IFTTT/body-functions/body-via-do
downloads from google drive as csv (sheet 1):
My Drive/Annual Data Files/2017/2017-body-via-do
My Drive/Annual Data Files/2018/2018-body-via-do
# pwd my clone of data.tomhummel.com repo
git checkout first-year-of-sneezes
mkdir -p workspace/sneezes-year-one
cd !$
mv ~/Downloads/2018-body-via-do\ -\ Sheet1.csv ./2018-body-via-do.csv
mv ~/Downloads/2017-body-via-do\ -\ Sheet1.csv ./2017-body-via-do.csv
echo "timestamp,type,lat,lon" > year-one-sneezes.csv && q -d "," "select substr(ltrim(substr(c1, instr(c1, ' '))),5,4)||'-'||substr('00' || CASE substr(c1, 0, instr(c1, ' ')) WHEN 'January' THEN 01 WHEN 'February' THEN 02 WHEN 'March' THEN 03 WHEN 'April' THEN 04 WHEN 'May' THEN 05 WHEN 'June' THEN 06 WHEN 'July' THEN 07 WHEN 'August' THEN 08 WHEN 'September' THEN 09 WHEN 'October' THEN 10 WHEN 'November' THEN 11 WHEN 'December' THEN 12 END, -2)||'-'||substr('00'||substr(ltrim(substr(c1, instr(c1, ' '))),1,2),-2)||'T'||substr('00' || CASE WHEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) = 12 and substr(substr(ltrim(substr(c1, instr(c1, ' '))),13),-2) = 'AM' THEN 0 WHEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) = 12 and substr(substr(ltrim(substr(c1, instr(c1, ' '))),13),-2) = 'PM' THEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) WHEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) >= 1 and cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) < 12 and substr(substr(ltrim(substr(c1, instr(c1, ' '))),13),-2) = 'AM' THEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) WHEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) >= 1 and cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER) < 12 and substr(substr(ltrim(substr(c1, instr(c1, ' '))),13),-2) = 'PM' THEN cast(substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':'), -2) as INTEGER)+12 END, -2)||':'||substr('00'||substr(substr(ltrim(substr(c1, instr(c1, ' '))),13), instr(substr(ltrim(substr(c1, instr(c1, ' '))),13), ':')+1, 2),-2) as timestamp, c2, c3, c4 from "<(q -d "," "select c1,c2,c3,c4 from ./2017-body-via-do.csv UNION select c1,c2,c3,c4 from ./2018-body-via-do.csv")" where c2 = 'sneeze' and timestamp >= '2017-04-23' and timestamp <= '2018-04-22' order by timestamp" >> year-one-sneezes.csv
query all rows via column names
q -H -d "," "select timestamp,type,lat,lon from ./year-one-sneezes.csv"
total sneeze count
q -H -d "," "select count(*) from ./year-one-sneezes.csv"
sneezes by year, month
q -H -d "," "select strftime('%Y', timestamp) as year, strftime('%m', timestamp) as month, count(*) from ./year-one-sneezes.csv group by year, month order by year, month" | (echo 'year,month,sneezes' && cat) | csvlook
sneezes by year, week
q -H -d "," "select strftime('%Y', timestamp) as year, strftime('%W', timestamp) as week, count(*) from ./year-one-sneezes.csv group by year, week" | (echo 'year,week,count' && cat) | csvlook
echo "date,count" > year-one-sneezes-daily.csv && q -H -d "," "select date(timestamp) as day, count(*) from ./year-one-sneezes.csv group by day" >> year-one-sneezes-daily.csv
sneezes summed by day of week (with day count for averaging)
q -H -d "," "select strftime('%w', date) as dow, round(avg(count),2) as sneezes_per_day, sum(count) as sneezes, count(date) as days from ./year-one-sneezes-daily.csv group by dow" | (echo 'day,sneezes per day,sneezes,days' && cat) | csvlook
most sneezes in one day
q -H -d "," "select date, count from ./year-one-sneezes-daily.csv order by count desc limit 10" | (echo 'date,sneezes' && cat) | csvlook
most sneezes in one day (by day of week, 0-6: sun-sat)
for i in $(seq 0 6); do echo "--$i--" && q -H -d "," "select date, count from ./year-one-sneezes-daily.csv where strftime('%w', date) = '$i' order by count desc" | (echo 'date,sneezes' && cat) | csvlook | head -n 10; done
most sneezes in one day (by month of year, 01-12: jan-dec)
for i in $(seq -f "%02g" 1 12); do echo "--$i--" && q -H -d "," "select date, count from ./year-one-sneezes-daily.csv where strftime('%m', date) = '$i' order by count desc" | (echo 'date,sneezes' && cat) | csvlook | head -n 10; done
most sneezes in a single hour
q -H -d "," "select date(timestamp) as date, strftime('%H', timestamp) as hour, count(*) as count from ./year-one-sneezes.csv group by date, hour order by count desc" | (echo 'date,hour,sneezes' && cat) | csvlook | head -n 15
most consecutive days with 1+ sneeze
date-range 2017-04-23 2018-04-22 | jq -r '.[]' | (echo "date" && cat) | csvjoin -c "1" --outer ./year-one-sneezes-daily.csv - 2>/dev/null | csvcut -c 3,2 | csvsort -c 1 | q -H -d "," "select date2, ifnull(count, 0) from -"| csvjson -H 2>/dev/null | jq ".[] | [.a, .b]" | jq --slurp . | streak --label 0 --column 1 --min 1 | jq -r ".[] | [.start, .end, .value] | @csv" | csvsort -H -c 3 -r 2>/dev/null | sed '1 s/.*/start,end,streak/' | csvlook | head -n 10
most consecutive days with 0 sneezes
date-range 2017-04-23 2018-04-22 | jq -r '.[]' | (echo "date" && cat) | csvjoin -c "1" --outer ./year-one-sneezes-daily.csv - 2>/dev/null | csvcut -c 3,2 | csvsort -c 1 | q -H -d "," "select date2, ifnull(count, 0) from -"| csvjson -H 2>/dev/null | jq ".[] | [.a, .b]" | jq --slurp . | streak --label 0 --column 1 --max 0 | jq -r ".[] | [.start, .end, .value] | @csv" | csvsort -H -c 3 -r 2>/dev/null | sed '1 s/.*/start,end,streak/' | csvlook | head -n 10
most sneezes in a 5-day span
q -H -d "," "select min(b.date), max(b.date), sum(b.count) as sneezes from ./year-one-sneezes-daily.csv a JOIN ./year-one-sneezes-daily.csv b ON (b.date < date(a.date, '+5 day') and b.date >= a.date) group by a.date order by sneezes desc" | (echo 'start,end,sneezes' && cat) | csvlook | head -n 10
tips
prepend a header row: | (echo "year,month,count" && cat)
overwrite the header row: | sed '1 s/.*/start,end,streak/'