The goal of ZoomReports is to gain more insight from the reports we get after a Zoom webinar.
devtools::install_github('beemyfriend/ZoomReports')
If you hosted a webinar, then you can get the associated reports by logging into zoom.us and then going to zoom.us/account/report/webinar
First, let's load the package.
library(ZoomReports)
We provide an example of a typical attendee report provided after a Zoom Webinar.
attend <- system.file("extdata",
"Anonymized_Zoom_Attendee_Report.csv",
package = "ZoomReports" )
#> [1] "Attendee Report,"
#> [2] "Report Generated:,\"Apr 09, 2020 8:50 PM\""
#> [3] "Topic,Webinar ID,Actual Start Time,Actual Duration (minutes),# Registered,# Cancelled,Unique Viewers,Total Users,Max Concurrent Views"
#> [4] "satRdays DC 2020,328-972-509,\"Mar 28, 2020 8:07 AM\", 548, 461, 0,446,991,0"
#> [5] "Host Details,"
#> [6] "Attended,User Name,Email,Join Time,Leave Time,Time in Session (minutes),Country/Region Name"
#> [7] "Yes,hostName_1,[email protected],\"Mar 28, 2020 08:07:27\",\"Mar 28, 2020 17:14:45\",548,United States of America"
#> [8] "Panelist Details,"
#> [9] "\"Attended\",\"User Name\",\"Email\",\"Join Time\",\"Leave Time\",\"Time in Session (minutes)\",\"Country/Region Name\""
#> [10] "\"Yes\",\"userName_1\",\"[email protected]\",\"Mar 28, 2020 09:39:09\",\"Mar 28, 2020 10:03:38\",25,\"United States of America\""
This single file contains 5 seperate CSV datasets: Attendee Report, Host Details, Panelist Details, Attendee Details, and Other Details. We are only interested in the data contained in Attendee Details.
attendees <- getAttendees(attend)
Attended | First Name | Last Name | Registration Time | Approval Status | Join Time | Leave Time | Time in Session (minutes) | Country/Region Name | |
---|---|---|---|---|---|---|---|---|---|
Yes | firstAttendee_130 | lastAttendee_130 | [email protected] | Mar 28, 2020 09:07:11 | approved | Mar 28, 2020 09:07:39 | Mar 28, 2020 09:26:54 | 20 | United States of America |
Yes | firstAttendee_52 | lastAttendee_52 | [email protected] | Mar 28, 2020 09:20:09 | approved | Mar 28, 2020 09:20:36 | Mar 28, 2020 09:57:38 | 38 | United States of America |
Yes | firstAttendee_52 | lastAttendee_52 | [email protected] | NA | NA | Mar 28, 2020 09:49:50 | Mar 28, 2020 09:51:42 | 2 | United States of America |
We can use this data to examine the country of our attendees.
countries <- getCountryInfo(attendees)
Country | Attendees | Average Time (Min/Attendee) |
---|---|---|
United States of America | 328 | 157.35 |
-- | 16 | 0.00 |
United Kingdom | 15 | 157.93 |
Canada | 8 | 194.75 |
Spain | 8 | 41.12 |
Germany | 7 | 150.00 |
Now let's look at the amount of attendees that joined or left the webinar over either 1 minute intervals or 10 minute intervals.
start_time <- "2020-03-28 08:00"
end_time <- "2020-03-28 18:00"
intervals_01 <- createIntervals(start_time, end_time, 1)
intervals_10 <- createIntervals(start_time, end_time, 10)
The output of createIntervals
is simply a vector of time intervals.
#> [1] 2020-03-28 08:00:00 UTC--2020-03-28 08:10:00 UTC
#> [2] 2020-03-28 08:10:00 UTC--2020-03-28 08:20:00 UTC
#> [3] 2020-03-28 08:20:00 UTC--2020-03-28 08:30:00 UTC
#> [4] 2020-03-28 08:30:00 UTC--2020-03-28 08:40:00 UTC
#> [5] 2020-03-28 08:40:00 UTC--2020-03-28 08:50:00 UTC
#> [6] 2020-03-28 08:50:00 UTC--2020-03-28 09:00:00 UTC
#> [7] 2020-03-28 09:00:00 UTC--2020-03-28 09:10:00 UTC
We can use this to bin the number of attendees that either join or leave during that interval.
timeData_01 <- getTimeData(intervals_01, attendees)
timeData_10 <- getTimeData(intervals_10, attendees)
interval | begin | joined | left | total | cum_total |
---|---|---|---|---|---|
2020-03-28 08:00:00 UTC--2020-03-28 08:10:00 UTC | 2020-03-28 08:00:00 | 0 | 0 | 0 | 0 |
2020-03-28 08:10:00 UTC--2020-03-28 08:20:00 UTC | 2020-03-28 08:10:00 | 0 | 0 | 0 | 0 |
2020-03-28 08:20:00 UTC--2020-03-28 08:30:00 UTC | 2020-03-28 08:20:00 | 0 | 0 | 0 | 0 |
2020-03-28 08:30:00 UTC--2020-03-28 08:40:00 UTC | 2020-03-28 08:30:00 | 54 | 25 | 29 | 29 |
2020-03-28 08:40:00 UTC--2020-03-28 08:50:00 UTC | 2020-03-28 08:40:00 | 23 | 13 | 10 | 39 |
2020-03-28 08:50:00 UTC--2020-03-28 09:00:00 UTC | 2020-03-28 08:50:00 | 37 | 11 | 26 | 65 |
With this time data we an now create visualizations to see the flow of people throughout the webinar.
showAttendeeMovement(timeData_01, 'cumulative')
showAttendeeMovement(timeData_10, 'discrete')
showAttendeeMovement(timeData_10, 'breakdown')