[英]How to transform your data and to create a heatmap with geom_tile?
我有一個包含60行的數據框(或表示工作計划的60個案例)和672個表示時間步長的列。 時間以15分鍾的間隔測量7天(從星期一開始),並且從04:00開始並在03:45結束。
代表4天的數據框結構:
dput(head(TiNiSWeek,4))
structure(list(`04:00` = c(0, 0, 0, 0), `04:15` = c(0, 0, 0,
0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 2, 0), `08:15` = c(0, 0, 2, 0), `08:30` = c(0, 0, 2, 0), `08:45` = c(0,
0, 2, 0), `09:00` = c(0, 2, 2, 0), `09:15` = c(0, 2, 2, 0), `09:30` = c(0,
2, 2, 0), `09:45` = c(0, 2, 2, 0), `10:00` = c(0, 2, 2, 2), `10:15` = c(0,
2, 2, 2), `10:30` = c(0, 2, 2, 2), `10:45` = c(0, 2, 2, 2), `11:00` = c(0,
2, 2, 2), `11:15` = c(0, 2, 2, 2), `11:30` = c(0, 2, 2, 2), `11:45` = c(0,
2, 2, 2), `12:00` = c(0, 2, 0, 2), `12:15` = c(0, 2, 2, 2), `12:30` = c(0,
2, 2, 2), `12:45` = c(0, 2, 2, 2), `13:00` = c(0, 2, 2, 2), `13:15` = c(0,
2, 2, 2), `13:30` = c(0, 2, 2, 2), `13:45` = c(0, 2, 2, 2), `14:00` = c(0,
2, 2, 2), `14:15` = c(0, 2, 2, 2), `14:30` = c(0, 2, 2, 2), `14:45` = c(0,
2, 2, 2), `15:00` = c(0, 2, 2, 2), `15:15` = c(0, 2, 2, 2), `15:30` = c(0,
2, 2, 2), `15:45` = c(0, 2, 2, 2), `16:00` = c(0, 2, 2, 2), `16:15` = c(0,
2, 2, 2), `16:30` = c(0, 2, 2, 2), `16:45` = c(0, 2, 2, 2), `17:00` = c(0,
2, 0, 2), `17:15` = c(0, 2, 0, 2), `17:30` = c(0, 2, 0, 2), `17:45` = c(0,
0, 0, 2), `18:00` = c(0, 0, 0, 0), `18:15` = c(0, 0, 0, 0), `18:30` = c(0,
0, 0, 0), `18:45` = c(0, 0, 0, 0), `19:00` = c(0, 0, 0, 0), `19:15` = c(0,
0, 0, 0), `19:30` = c(0, 0, 0, 0), `19:45` = c(0, 0, 0, 0), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(2, 0, 0, 0), `07:15` = c(2,
0, 0, 0), `07:30` = c(2, 0, 0, 0), `07:45` = c(2, 0, 0, 0), `08:00` = c(2,
0, 2, 0), `08:15` = c(2, 0, 2, 0), `08:30` = c(2, 0, 2, 0), `08:45` = c(2,
0, 2, 0), `09:00` = c(2, 2, 2, 0), `09:15` = c(2, 2, 2, 0), `09:30` = c(2,
2, 2, 0), `09:45` = c(2, 2, 2, 0), `10:00` = c(2, 2, 2, 2), `10:15` = c(2,
2, 2, 2), `10:30` = c(2, 2, 2, 2), `10:45` = c(2, 2, 2, 2), `11:00` = c(2,
2, 2, 2), `11:15` = c(2, 2, 2, 2), `11:30` = c(2, 2, 2, 2), `11:45` = c(2,
2, 2, 2), `12:00` = c(2, 2, 0, 2), `12:15` = c(2, 2, 0, 2), `12:30` = c(2,
2, 2, 2), `12:45` = c(2, 2, 2, 2), `13:00` = c(2, 2, 2, 2), `13:15` = c(2,
2, 2, 2), `13:30` = c(2, 2, 2, 2), `13:45` = c(2, 2, 2, 2), `14:00` = c(2,
2, 2, 2), `14:15` = c(2, 2, 2, 2), `14:30` = c(2, 2, 2, 2), `14:45` = c(2,
2, 2, 2), `15:00` = c(2, 2, 2, 0), `15:15` = c(2, 2, 2, 0), `15:30` = c(2,
2, 2, 0), `15:45` = c(2, 2, 2, 0), `16:00` = c(2, 2, 2, 0), `16:15` = c(2,
2, 2, 0), `16:30` = c(2, 2, 2, 0), `16:45` = c(2, 2, 2, 0), `17:00` = c(2,
2, 2, 0), `17:15` = c(0, 2, 2, 0), `17:30` = c(0, 2, 0, 0), `17:45` = c(0,
2, 0, 0), `18:00` = c(0, 0, 0, 0), `18:15` = c(0, 0, 0, 0), `18:30` = c(0,
0, 0, 0), `18:45` = c(0, 0, 0, 0), `19:00` = c(0, 0, 0, 0), `19:15` = c(0,
0, 0, 0), `19:30` = c(0, 0, 0, 0), `19:45` = c(0, 0, 0, 0), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 2, 0), `08:15` = c(0, 0, 2, 0), `08:30` = c(0, 0, 2, 0), `08:45` = c(0,
0, 2, 0), `09:00` = c(0, 0, 2, 0), `09:15` = c(0, 0, 2, 0), `09:30` = c(0,
2, 2, 0), `09:45` = c(0, 2, 2, 0), `10:00` = c(0, 2, 2, 2), `10:15` = c(0,
2, 2, 2), `10:30` = c(0, 2, 2, 2), `10:45` = c(0, 2, 2, 2), `11:00` = c(0,
2, 2, 2), `11:15` = c(0, 2, 2, 2), `11:30` = c(0, 2, 2, 2), `11:45` = c(0,
2, 2, 2), `12:00` = c(0, 2, 2, 2), `12:15` = c(0, 2, 2, 2), `12:30` = c(0,
2, 2, 2), `12:45` = c(0, 2, 2, 2), `13:00` = c(0, 2, 2, 2), `13:15` = c(0,
2, 0, 2), `13:30` = c(0, 2, 0, 2), `13:45` = c(0, 2, 2, 2), `14:00` = c(0,
2, 2, 2), `14:15` = c(0, 2, 2, 2), `14:30` = c(0, 2, 2, 2), `14:45` = c(0,
2, 2, 2), `15:00` = c(0, 2, 2, 0), `15:15` = c(0, 2, 2, 0), `15:30` = c(0,
2, 2, 0), `15:45` = c(0, 2, 2, 0), `16:00` = c(0, 2, 2, 0), `16:15` = c(0,
2, 2, 0), `16:30` = c(0, 2, 2, 0), `16:45` = c(0, 2, 2, 0), `17:00` = c(0,
2, 2, 0), `17:15` = c(0, 2, 0, 0), `17:30` = c(0, 2, 0, 0), `17:45` = c(0,
2, 0, 0), `18:00` = c(0, 0, 0, 0), `18:15` = c(0, 0, 0, 0), `18:30` = c(0,
0, 0, 0), `18:45` = c(0, 0, 0, 0), `19:00` = c(0, 0, 0, 0), `19:15` = c(0,
0, 0, 0), `19:30` = c(0, 0, 0, 0), `19:45` = c(0, 0, 0, 0), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 2, 0), `08:15` = c(0, 0, 2, 0), `08:30` = c(0, 0, 2, 0), `08:45` = c(0,
0, 2, 0), `09:00` = c(0, 2, 2, 0), `09:15` = c(0, 2, 2, 0), `09:30` = c(0,
2, 2, 0), `09:45` = c(0, 2, 2, 2), `10:00` = c(0, 2, 2, 2), `10:15` = c(0,
2, 2, 2), `10:30` = c(0, 2, 2, 2), `10:45` = c(0, 2, 2, 2), `11:00` = c(0,
2, 2, 2), `11:15` = c(0, 2, 2, 2), `11:30` = c(0, 2, 2, 2), `11:45` = c(0,
2, 2, 2), `12:00` = c(0, 2, 2, 2), `12:15` = c(0, 2, 2, 2), `12:30` = c(0,
2, 2, 2), `12:45` = c(0, 2, 2, 2), `13:00` = c(0, 2, 0, 2), `13:15` = c(0,
2, 2, 2), `13:30` = c(0, 2, 2, 2), `13:45` = c(0, 2, 2, 2), `14:00` = c(0,
2, 2, 2), `14:15` = c(0, 2, 2, 2), `14:30` = c(0, 2, 2, 2), `14:45` = c(0,
2, 2, 2), `15:00` = c(0, 2, 2, 2), `15:15` = c(0, 2, 2, 2), `15:30` = c(0,
2, 2, 2), `15:45` = c(0, 2, 2, 2), `16:00` = c(0, 2, 2, 2), `16:15` = c(0,
2, 2, 2), `16:30` = c(0, 2, 2, 2), `16:45` = c(0, 2, 2, 2), `17:00` = c(0,
2, 2, 2), `17:15` = c(0, 2, 2, 2), `17:30` = c(0, 2, 2, 2), `17:45` = c(0,
2, 2, 2), `18:00` = c(0, 0, 2, 2), `18:15` = c(0, 0, 2, 2), `18:30` = c(0,
0, 0, 2), `18:45` = c(0, 0, 0, 2), `19:00` = c(0, 0, 0, 2), `19:15` = c(0,
0, 0, 2), `19:30` = c(0, 0, 0, 2), `19:45` = c(0, 0, 0, 2), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 2, 0), `08:15` = c(0, 0, 2, 0), `08:30` = c(0, 0, 2, 0), `08:45` = c(0,
0, 2, 0), `09:00` = c(0, 2, 2, 0), `09:15` = c(0, 2, 2, 0), `09:30` = c(0,
2, 2, 2), `09:45` = c(0, 2, 2, 2), `10:00` = c(0, 2, 2, 2), `10:15` = c(0,
2, 2, 2), `10:30` = c(0, 2, 2, 2), `10:45` = c(0, 2, 2, 2), `11:00` = c(0,
2, 2, 2), `11:15` = c(0, 2, 2, 2), `11:30` = c(0, 2, 2, 2), `11:45` = c(0,
2, 2, 2), `12:00` = c(0, 2, 2, 2), `12:15` = c(0, 2, 2, 2), `12:30` = c(0,
2, 2, 2), `12:45` = c(0, 2, 2, 2), `13:00` = c(0, 2, 2, 2), `13:15` = c(0,
2, 2, 2), `13:30` = c(0, 2, 2, 2), `13:45` = c(0, 2, 2, 2), `14:00` = c(0,
2, 2, 2), `14:15` = c(0, 2, 0, 2), `14:30` = c(0, 2, 2, 2), `14:45` = c(0,
2, 2, 2), `15:00` = c(0, 2, 2, 2), `15:15` = c(0, 2, 2, 2), `15:30` = c(0,
2, 2, 2), `15:45` = c(0, 2, 2, 2), `16:00` = c(0, 2, 2, 2), `16:15` = c(0,
2, 2, 2), `16:30` = c(0, 2, 2, 2), `16:45` = c(0, 2, 2, 2), `17:00` = c(0,
2, 2, 2), `17:15` = c(0, 2, 0, 2), `17:30` = c(0, 2, 0, 2), `17:45` = c(0,
2, 0, 2), `18:00` = c(0, 0, 0, 2), `18:15` = c(0, 0, 0, 2), `18:30` = c(0,
0, 0, 2), `18:45` = c(0, 0, 0, 2), `19:00` = c(0, 0, 0, 2), `19:15` = c(0,
0, 0, 2), `19:30` = c(0, 0, 0, 2), `19:45` = c(0, 0, 0, 2), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 0, 0), `08:15` = c(0, 0, 0, 0), `08:30` = c(0, 0, 0, 0), `08:45` = c(0,
0, 0, 0), `09:00` = c(0, 0, 0, 0), `09:15` = c(0, 0, 0, 0), `09:30` = c(0,
0, 0, 0), `09:45` = c(0, 0, 0, 0), `10:00` = c(0, 0, 0, 0), `10:15` = c(0,
0, 0, 0), `10:30` = c(0, 0, 0, 0), `10:45` = c(0, 0, 0, 0), `11:00` = c(0,
0, 0, 0), `11:15` = c(0, 0, 0, 0), `11:30` = c(0, 0, 0, 0), `11:45` = c(0,
0, 0, 0), `12:00` = c(0, 0, 0, 0), `12:15` = c(0, 0, 0, 0), `12:30` = c(0,
0, 0, 0), `12:45` = c(0, 0, 0, 0), `13:00` = c(0, 0, 0, 0), `13:15` = c(0,
0, 0, 0), `13:30` = c(0, 0, 0, 0), `13:45` = c(0, 0, 0, 0), `14:00` = c(0,
0, 0, 0), `14:15` = c(0, 0, 0, 0), `14:30` = c(0, 0, 0, 0), `14:45` = c(0,
0, 0, 0), `15:00` = c(0, 0, 0, 0), `15:15` = c(0, 0, 0, 0), `15:30` = c(0,
0, 0, 0), `15:45` = c(0, 0, 0, 0), `16:00` = c(0, 0, 0, 0), `16:15` = c(0,
0, 0, 0), `16:30` = c(0, 0, 0, 0), `16:45` = c(0, 0, 0, 0), `17:00` = c(0,
0, 0, 0), `17:15` = c(0, 0, 0, 0), `17:30` = c(0, 0, 0, 0), `17:45` = c(0,
0, 0, 0), `18:00` = c(0, 0, 0, 0), `18:15` = c(0, 0, 0, 0), `18:30` = c(0,
0, 0, 0), `18:45` = c(0, 0, 0, 0), `19:00` = c(0, 0, 0, 0), `19:15` = c(0,
0, 0, 0), `19:30` = c(0, 0, 0, 0), `19:45` = c(0, 0, 0, 0), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0), `04:00` = c(0, 0, 0, 0), `04:15` = c(0,
0, 0, 0), `04:30` = c(0, 0, 0, 0), `04:45` = c(0, 0, 0, 0), `05:00` = c(0,
0, 0, 0), `05:15` = c(0, 0, 0, 0), `05:30` = c(0, 0, 0, 0), `05:45` = c(0,
0, 0, 0), `06:00` = c(0, 0, 0, 0), `06:15` = c(0, 0, 0, 0), `06:30` = c(0,
0, 0, 0), `06:45` = c(0, 0, 0, 0), `07:00` = c(0, 0, 0, 0), `07:15` = c(0,
0, 0, 0), `07:30` = c(0, 0, 0, 0), `07:45` = c(0, 0, 0, 0), `08:00` = c(0,
0, 0, 0), `08:15` = c(0, 0, 0, 0), `08:30` = c(0, 0, 0, 0), `08:45` = c(0,
0, 0, 0), `09:00` = c(0, 0, 0, 0), `09:15` = c(0, 0, 0, 0), `09:30` = c(0,
0, 0, 0), `09:45` = c(0, 0, 0, 0), `10:00` = c(0, 0, 0, 0), `10:15` = c(0,
0, 0, 0), `10:30` = c(0, 0, 0, 0), `10:45` = c(0, 0, 0, 0), `11:00` = c(0,
0, 0, 0), `11:15` = c(0, 0, 0, 0), `11:30` = c(0, 0, 0, 0), `11:45` = c(0,
0, 0, 0), `12:00` = c(0, 0, 0, 0), `12:15` = c(0, 0, 0, 0), `12:30` = c(0,
0, 0, 0), `12:45` = c(0, 0, 0, 0), `13:00` = c(0, 0, 0, 0), `13:15` = c(0,
0, 0, 0), `13:30` = c(0, 0, 0, 0), `13:45` = c(0, 0, 0, 0), `14:00` = c(0,
0, 0, 0), `14:15` = c(0, 0, 0, 0), `14:30` = c(0, 0, 0, 0), `14:45` = c(0,
0, 0, 0), `15:00` = c(0, 0, 0, 0), `15:15` = c(0, 0, 0, 0), `15:30` = c(0,
0, 0, 0), `15:45` = c(0, 0, 0, 0), `16:00` = c(0, 0, 0, 0), `16:15` = c(0,
0, 0, 0), `16:30` = c(0, 0, 0, 0), `16:45` = c(0, 0, 0, 0), `17:00` = c(0,
0, 0, 0), `17:15` = c(0, 0, 0, 0), `17:30` = c(0, 0, 0, 0), `17:45` = c(0,
0, 0, 0), `18:00` = c(0, 0, 0, 0), `18:15` = c(0, 0, 0, 0), `18:30` = c(0,
0, 0, 0), `18:45` = c(0, 0, 0, 0), `19:00` = c(0, 0, 0, 0), `19:15` = c(0,
0, 0, 0), `19:30` = c(0, 0, 0, 0), `19:45` = c(0, 0, 0, 0), `20:00` = c(0,
0, 0, 0), `20:15` = c(0, 0, 0, 0), `20:30` = c(0, 0, 0, 0), `20:45` = c(0,
0, 0, 0), `21:00` = c(0, 0, 0, 0), `21:15` = c(0, 0, 0, 0), `21:30` = c(0,
0, 0, 0), `21:45` = c(0, 0, 0, 0), `22:00` = c(0, 0, 0, 0), `22:15` = c(0,
0, 0, 0), `22:30` = c(0, 0, 0, 0), `22:45` = c(0, 0, 0, 0), `23:00` = c(0,
0, 0, 0), `23:15` = c(0, 0, 0, 0), `23:30` = c(0, 0, 0, 0), `23:45` = c(0,
0, 0, 0), `00:00` = c(0, 0, 0, 0), `00:15` = c(0, 0, 0, 0), `00:30` = c(0,
0, 0, 0), `00:45` = c(0, 0, 0, 0), `01:00` = c(0, 0, 0, 0), `01:15` = c(0,
0, 0, 0), `01:30` = c(0, 0, 0, 0), `01:45` = c(0, 0, 0, 0), `02:00` = c(0,
0, 0, 0), `02:15` = c(0, 0, 0, 0), `02:30` = c(0, 0, 0, 0), `02:45` = c(0,
0, 0, 0), `03:00` = c(0, 0, 0, 0), `03:15` = c(0, 0, 0, 0), `03:30` = c(0,
0, 0, 0), `03:45` = c(0, 0, 0, 0)), row.names = c(NA, 4L), class = "data.frame")
下面是一個數據框的例子,其中有10個觀察結果,持續3天,盯着04:00,結束時間是03:45
04:00 04:15...03:45 04:00 04:15...03:45 04:00 04:15...03:45
1: 0 0 0 0 0 2 2 0 2
2: 2 2 0 2 2 2 0 0 0
3: 2 0 2 2 2 2 0 2 2
4: 0 0 0 2 2 2 0 2 2
5: 0 0 0 2 2 2 0 2 2
6: 2 0 2 0 2 2 0 2 2
7: 0 0 0 2 2 2 2 0 2
8: 2 2 2 2 2 2 0 0 2
9: 0 0 0 2 2 2 0 0 2
10: 2 2 2 2 2 2 0 0 2
我的第一個問題是如何轉換數據以顯示日常工作時間表; 換句話說,第一次觀察從04:00開始,到03:45結束,以顯示星期一的時間表; 接着是04:00,結束於03:45,顯示周二的時間表。
Monday Tuesday Wednesday
04:00 04:15...03:45 04:00 04:15...03:45 04:00 04:15...03:45
1: 0 0 0 0 0 2 2 0 2
2: 2 2 0 2 2 2 0 0 0
3: 2 0 2 2 2 2 0 2 2
4: 0 0 0 2 2 2 0 2 2
5: 0 0 0 2 2 2 0 2 2
6: 2 0 2 0 2 2 0 2 2
7: 0 0 0 2 2 2 2 0 2
8: 2 2 2 2 2 2 0 0 2
9: 0 0 0 2 2 2 0 0 2
10: 2 2 2 2 2 2 0 0 2
在下一步中,我想提取以“2”開頭的間隔的開始和結束
例如2:星期一:04:00-04:15; 周二:04:00-04:15;
最后,我想轉換數據並使用geom_tile繪制間隔的開始和結束,如下圖所示:
基於以上答案+我的工作改進情節
我就是這樣做的。 我把你的dput
語句的輸出放在一個名為df
的變量中。
首先,我將您的姓名重命名為包括星期幾:
df2 <- df
weekdays <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
colnames(df2) <- paste0(rep(weekdays, each = 24 * 4), "_", colnames(df2))
然后我為每一行添加一個索引,因此它可以用作y軸。
df2$index <- 1:nrow(df2)
然后我將數據從寬格式轉換為長格式,並將我們的colnames設置為字符而不是因素:
df3 <- reshape2::melt(df2, id.vars = "index")
df3$variable <- as.character(df3$variable)
以前的姓氏現在需要再次解釋為日期+時間。 我把這一天設定為weekdays
訂單之后的一個因素。 我將時間變量設置為連續hour + minutes / 60
。
df3$day <- sapply(strsplit(df3$variable, "_"), `[`, 1)
df3$day <- factor(df3$day, levels = weekdays)
df3$time <- sapply(strsplit(df3$variable, "_"), `[`, 2)
df3$time <- as.numeric(substr(df3$time, 1, 2)) + as.numeric(substr(df3$time, 4, 5)) / 60
然后我們可以將其繪制為以天為單位的柵格:
ggplot(df3, aes(x = time, y = index, fill = value)) +
geom_raster() +
facet_grid(~ day) +
scale_x_continuous(expand = c(0,0), name = "Hour") +
theme(panel.spacing = unit(0, "mm"))
這與您提出的熱圖非常接近。
最后,為了提取索引i
的invervals:
library(S4Vectors)
i <- 4
rle <- Rle(as.numeric(df[i,]))
ends <- end(rle)
starts <- start(rle)
out <- data.frame(length = rle@lengths,
values = rle@values,
start = starts,
end = ends)
head(out)
length values start end
1 24 0 1 24
2 32 2 25 56
3 64 0 57 120
4 20 2 121 140
5 76 0 141 216
6 20 2 217 236
您可以將其轉換為以下時間:
colnames(df)[out$start[out$values == 2]]
[1] "10:00" "10:00" "10:00" "09:45" "09:30"
編輯:您可以通過將此函數用作scale_x_continuous/discrete()
內的labels
將連續時間表示轉換回時鍾格式:
timeformat <- function(x){
# Get back relevant numbers
unshift <- ifelse(x > 24, x - 24, x)
hours <- unshift - unshift %% 1
minutes <- (unshift - hours) * 60
# Format
hour <- formatC(hour, width = 2, format = "d", flag = "0")
minutes <- formatC(minutes, width = 2, format = "d", flag = "0")
return(paste0(hour,":", minutes))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.