url <- "https://log.adroit.games/logs/download?game=mhs"
json_data <- fromJSON(url)
pilotTest1 <- as.data.frame(json_data)
pilotTestDates = pilotTest1 %>% mutate(ts = ymd_hms(timestamp, tz = "UTC"),
date = as_date(ts))
daily_span = pilotTestDates %>% group_by(date, player_id) %>% summarise(n_records = n(),
first_time = min(ts),
last_time = max(ts),
duration = difftime(last_time, first_time,
units = "secs"),
.groups = "drop") %>%
mutate(duration_hours = as.numeric(duration, units = "hours")) %>% data.frame()
knitr::kable(daily_span, caption = "Table: General Information for Log Records")
| date | player_id | n_records | first_time | last_time | duration | duration_hours |
|---|---|---|---|---|---|---|
| 2025-04-24 | Test Player | 11 | 2025-04-24 23:37:44 | 2025-04-24 23:52:58 | 914.358 secs | 0.2539883 |
| 2025-04-24 | test_player1 | 1 | 2025-04-24 23:24:38 | 2025-04-24 23:24:38 | 0.000 secs | 0.0000000 |
| 2025-04-24 | test_player2 | 1 | 2025-04-24 23:26:00 | 2025-04-24 23:26:00 | 0.000 secs | 0.0000000 |
| 2025-04-25 | Test Player | 12 | 2025-04-25 00:07:12 | 2025-04-25 21:36:31 | 77359.198 secs | 21.4886661 |
| 2025-04-28 | Test Player | 13 | 2025-04-28 16:02:52 | 2025-04-28 16:06:54 | 242.036 secs | 0.0672322 |
| 2025-04-29 | Test Player | 1 | 2025-04-29 21:48:30 | 2025-04-29 21:48:30 | 0.000 secs | 0.0000000 |
| 2025-04-30 | Test Player | 56 | 2025-04-30 00:38:48 | 2025-04-30 14:45:36 | 50808.213 secs | 14.1133925 |
| 2025-05-01 | Test Player | 192 | 2025-05-01 12:41:51 | 2025-05-01 23:03:38 | 37306.625 secs | 10.3629514 |
| 2025-05-02 | Test Player | 162 | 2025-05-02 00:48:14 | 2025-05-02 20:46:16 | 71881.669 secs | 19.9671303 |
| 2025-05-04 | Test Player | 8 | 2025-05-04 23:24:52 | 2025-05-04 23:39:02 | 849.443 secs | 0.2359564 |
| 2025-05-05 | Test Player | 175 | 2025-05-05 00:03:53 | 2025-05-05 23:21:05 | 83832.130 secs | 23.2867028 |
| 2025-05-06 | Test Player | 292 | 2025-05-06 17:57:05 | 2025-05-06 23:24:38 | 19652.769 secs | 5.4591025 |
| 2025-05-07 | Test Player | 539 | 2025-05-07 00:24:19 | 2025-05-07 21:51:25 | 77226.038 secs | 21.4516772 |
| 2025-05-08 | Test Player | 561 | 2025-05-08 00:01:15 | 2025-05-08 23:03:10 | 82914.917 secs | 23.0319214 |
| 2025-05-09 | Test Player | 97 | 2025-05-09 01:56:22 | 2025-05-09 18:19:30 | 58987.782 secs | 16.3854950 |
| 2025-05-10 | Test Player | 56 | 2025-05-10 20:03:45 | 2025-05-10 20:24:07 | 1222.343 secs | 0.3395397 |
| 2025-05-11 | Test Player | 43 | 2025-05-11 14:15:41 | 2025-05-11 22:40:00 | 30258.691 secs | 8.4051919 |
| 2025-05-12 | Test Player | 244 | 2025-05-12 03:10:14 | 2025-05-12 20:26:18 | 62164.310 secs | 17.2678639 |
| 2025-05-13 | Test Player | 7500 | 2025-05-13 04:31:25 | 2025-05-13 21:32:00 | 61234.670 secs | 17.0096306 |
| 2025-05-14 | Test Player | 4312 | 2025-05-14 12:31:16 | 2025-05-14 20:09:09 | 27472.825 secs | 7.6313403 |
| 2025-05-14 | test_player | 1 | 2025-05-14 05:09:28 | 2025-05-14 05:09:28 | 0.000 secs | 0.0000000 |
| 2025-05-14 | test_player2 | 1 | 2025-05-14 05:21:46 | 2025-05-14 05:21:46 | 0.000 secs | 0.0000000 |
| 2025-05-15 | Alden Reese | 37 | 2025-05-15 23:26:52 | 2025-05-15 23:36:25 | 572.354 secs | 0.1589872 |
| 2025-05-15 | Aleah Hess | 13 | 2025-05-15 19:45:57 | 2025-05-15 19:50:37 | 279.520 secs | 0.0776444 |
| 2025-05-15 | Test Player | 1959 | 2025-05-15 00:19:25 | 2025-05-15 23:46:07 | 84402.267 secs | 23.4450742 |
| 2025-05-16 | Cobb-Coleman, Jayden | 24 | 2025-05-16 17:51:58 | 2025-05-16 18:02:11 | 612.633 secs | 0.1701758 |
| 2025-05-16 | Gonzalez, Yvonne | 76 | 2025-05-16 15:38:21 | 2025-05-16 16:09:54 | 1892.777 secs | 0.5257714 |
| 2025-05-16 | Jones, Jackson | 32 | 2025-05-16 14:15:21 | 2025-05-16 14:58:44 | 2602.553 secs | 0.7229314 |
| 2025-05-16 | Kieren O’Bannon | 217 | 2025-05-16 19:23:07 | 2025-05-16 23:59:25 | 16577.962 secs | 4.6049894 |
| 2025-05-16 | Lara-Oyola, Ivonne | 1 | 2025-05-16 16:46:43 | 2025-05-16 16:46:43 | 0.000 secs | 0.0000000 |
| 2025-05-16 | Lewis, Saniyah | 78 | 2025-05-16 16:48:20 | 2025-05-16 17:25:11 | 2211.361 secs | 0.6142669 |
| 2025-05-16 | Neely Capers, Deana | 46 | 2025-05-16 14:08:32 | 2025-05-16 14:34:15 | 1543.562 secs | 0.4287672 |
| 2025-05-16 | Russell, Arianna | 3 | 2025-05-16 14:16:20 | 2025-05-16 14:17:25 | 65.172 secs | 0.0181033 |
| 2025-05-16 | Test Player | 289 | 2025-05-16 13:07:25 | 2025-05-16 20:03:14 | 24949.191 secs | 6.9303308 |
| 2025-05-16 | Unit3testA | 16 | 2025-05-16 02:56:48 | 2025-05-16 03:03:43 | 415.175 secs | 0.1153264 |
| 2025-05-16 | Unit3testB | 12 | 2025-05-16 03:06:37 | 2025-05-16 03:11:18 | 281.040 secs | 0.0780667 |
| 2025-05-16 | Venable , Ellis | 40 | 2025-05-16 15:08:25 | 2025-05-16 15:27:14 | 1128.876 secs | 0.3135767 |
| 2025-05-17 | Kieren O’Bannon | 9 | 2025-05-17 00:00:55 | 2025-05-17 00:12:55 | 720.012 secs | 0.2000033 |
| 2025-05-18 | Rodriguez-Suarez, Yainily | 5 | 2025-05-18 21:33:06 | 2025-05-18 21:35:10 | 123.636 secs | 0.0343433 |
| 2025-05-18 | Test Player | 5 | 2025-05-18 19:37:14 | 2025-05-18 21:22:04 | 6289.880 secs | 1.7471889 |
| 2025-05-19 | Adelia Hans | 1 | 2025-05-19 19:21:28 | 2025-05-19 19:21:28 | 0.000 secs | 0.0000000 |
| 2025-05-19 | Ava Dittmer | 45 | 2025-05-19 19:20:48 | 2025-05-19 19:49:19 | 1711.184 secs | 0.4753289 |
| 2025-05-19 | Baylee Blank | 3 | 2025-05-19 19:24:58 | 2025-05-19 19:26:00 | 61.705 secs | 0.0171403 |
| 2025-05-19 | Dafne Marquez | 70 | 2025-05-19 19:09:24 | 2025-05-19 19:46:52 | 2248.253 secs | 0.6245147 |
| 2025-05-19 | Elizabeth Brown | 36 | 2025-05-19 19:41:19 | 2025-05-19 19:57:15 | 955.408 secs | 0.2653911 |
| 2025-05-19 | Test Player | 173 | 2025-05-19 13:13:01 | 2025-05-19 19:54:26 | 24085.475 secs | 6.6904097 |
| 2025-05-20 | Test Player | 104 | 2025-05-20 17:25:00 | 2025-05-20 20:51:57 | 12417.183 secs | 3.4492175 |
| 2025-05-21 | Test Player | 339 | 2025-05-21 16:21:19 | 2025-05-21 21:20:42 | 17962.463 secs | 4.9895731 |
| 2025-05-22 | Jones, Jackson | 1 | 2025-05-22 14:56:52 | 2025-05-22 14:56:52 | 0.000 secs | 0.0000000 |
| 2025-05-22 | Test Player | 125 | 2025-05-22 04:46:13 | 2025-05-22 23:28:51 | 67358.174 secs | 18.7106039 |
| 2025-05-22 | studenttestB | 3 | 2025-05-22 15:26:41 | 2025-05-22 15:29:46 | 184.689 secs | 0.0513025 |
| 2025-05-23 | Cobb-Coleman, Jayden | 62 | 2025-05-23 18:00:33 | 2025-05-23 18:42:07 | 2493.994 secs | 0.6927761 |
| 2025-05-23 | Gonzalez, Yvonne | 72 | 2025-05-23 15:16:52 | 2025-05-23 16:02:37 | 2744.900 secs | 0.7624722 |
| 2025-05-23 | Serecka-Cepero, Daniel | 88 | 2025-05-23 15:43:42 | 2025-05-23 16:27:27 | 2624.900 secs | 0.7291389 |
| 2025-05-23 | Test Player | 175 | 2025-05-23 14:45:59 | 2025-05-23 21:28:03 | 24123.199 secs | 6.7008886 |
| 2025-05-25 | Test Player | 43 | 2025-05-25 01:24:38 | 2025-05-25 21:35:18 | 72639.627 secs | 20.1776742 |
| 2025-05-27 | Test Player | 49 | 2025-05-27 16:58:09 | 2025-05-27 19:58:21 | 10811.980 secs | 3.0033278 |
| 2025-05-28 | Test Player | 318 | 2025-05-28 00:48:37 | 2025-05-28 20:52:28 | 72230.890 secs | 20.0641361 |
| 2025-05-29 | Test Player | 231 | 2025-05-29 15:21:13 | 2025-05-29 21:19:51 | 21517.930 secs | 5.9772028 |
| 2025-05-30 | Test Player | 122 | 2025-05-30 01:00:33 | 2025-05-30 22:07:40 | 76027.374 secs | 21.1187150 |
| 2025-05-30 | editor@example.com | 10 | 2025-05-30 22:07:39 | 2025-05-30 23:08:15 | 3635.862 secs | 1.0099617 |
| 2025-05-30 | sysadmin@adroit.games | 65 | 2025-05-30 22:55:54 | 2025-05-30 23:39:29 | 2614.396 secs | 0.7262211 |
| 2025-05-31 | Test Player | 19 | 2025-05-31 00:55:47 | 2025-05-31 01:00:45 | 297.369 secs | 0.0826025 |
| 2025-06-02 | Test Player | 32 | 2025-06-02 19:03:03 | 2025-06-02 20:50:06 | 6423.143 secs | 1.7842064 |
| 2025-06-03 | Lewis, Saniyah | 15 | 2025-06-03 17:35:48 | 2025-06-03 17:42:00 | 372.581 secs | 0.1034947 |
| 2025-06-03 | Test Player | 21 | 2025-06-03 17:37:22 | 2025-06-03 17:56:12 | 1129.360 secs | 0.3137111 |
| 2025-06-03 | studenttestB | 1 | 2025-06-03 15:56:51 | 2025-06-03 15:56:51 | 0.000 secs | 0.0000000 |
| 2025-06-04 | Test Player | 117 | 2025-06-04 21:21:03 | 2025-06-04 23:59:20 | 9496.619 secs | 2.6379497 |
| 2025-06-04 | editor@example.com | 35 | 2025-06-04 21:15:36 | 2025-06-04 21:25:36 | 600.082 secs | 0.1666894 |
| 2025-06-05 | Test Player | 120 | 2025-06-05 00:00:50 | 2025-06-05 02:59:20 | 10710.194 secs | 2.9750539 |
| 2025-06-05 | editor@example.com | 10 | 2025-06-05 17:57:00 | 2025-06-05 21:56:19 | 14359.276 secs | 3.9886878 |
| 2025-06-06 | Test Player | 43 | 2025-06-06 20:53:11 | 2025-06-06 21:14:29 | 1278.018 secs | 0.3550050 |
You can also embed plots, for example:
pilotTest1DialogueEvent = pilotTest1 %>% filter(event_type == "dialogueEvent")
pilotTest1DialogueEventClean = pilotTest1DialogueEvent %>%
mutate(event_data = map(event_data, ~ fromJSON(.x, simplifyVector = TRUE))) %>%
unnest_wider(event_data) %>% data.frame()
pilotTest1DialogueEventCleanFinish = pilotTest1DialogueEventClean %>%
filter(dialogueEventType == "DialogueFinishEvent")
dialogue_daily_span = pilotTest1DialogueEventCleanFinish %>% group_by(player_id, conversationId) %>% summarise(n_records = n(),
.groups = "drop") %>%
arrange(player_id, as.numeric(conversationId)) %>% data.frame()
knitr::kable(dialogue_daily_span, caption = "Table: Daily Dialogue Records per Player")
| player_id | conversationId | n_records |
|---|---|---|
| Alden Reese | 1 | 2 |
| Alden Reese | 5 | 1 |
| Alden Reese | 9 | 4 |
| Alden Reese | 17 | 1 |
| Aleah Hess | 1 | 1 |
| Aleah Hess | 5 | 1 |
| Ava Dittmer | 1 | 1 |
| Cobb-Coleman, Jayden | 1 | 1 |
| Cobb-Coleman, Jayden | 5 | 1 |
| Dafne Marquez | 1 | 1 |
| Dafne Marquez | 5 | 1 |
| Elizabeth Brown | 1 | 1 |
| Elizabeth Brown | 5 | 1 |
| Gonzalez, Yvonne | 1 | 3 |
| Gonzalez, Yvonne | 5 | 2 |
| Gonzalez, Yvonne | 14 | 3 |
| Gonzalez, Yvonne | 21 | 1 |
| Jones, Jackson | 1 | 1 |
| Jones, Jackson | 5 | 1 |
| Kieren O’Bannon | 1 | 1 |
| Kieren O’Bannon | 5 | 1 |
| Kieren O’Bannon | 10 | 6 |
| Lewis, Saniyah | 1 | 2 |
| Lewis, Saniyah | 5 | 1 |
| Lewis, Saniyah | 13 | 1 |
| Lewis, Saniyah | 18 | 1 |
| Neely Capers, Deana | 1 | 1 |
| Neely Capers, Deana | 5 | 1 |
| Serecka-Cepero, Daniel | 1 | 1 |
| Test Player | 0 | 7 |
| Test Player | 1 | 638 |
| Test Player | 2 | 417 |
| Test Player | 3 | 302 |
| Test Player | 4 | 35 |
| Test Player | 5 | 49 |
| Test Player | 6 | 18 |
| Test Player | 7 | 13 |
| Test Player | 8 | 20 |
| Test Player | 9 | 38 |
| Test Player | 10 | 102 |
| Test Player | 11 | 57 |
| Test Player | 12 | 53 |
| Test Player | 13 | 45 |
| Test Player | 14 | 44 |
| Test Player | 15 | 31 |
| Test Player | 16 | 27 |
| Test Player | 17 | 36 |
| Test Player | 18 | 11 |
| Test Player | 19 | 20 |
| Test Player | 20 | 10 |
| Test Player | 21 | 5 |
| Test Player | 22 | 6 |
| Test Player | 23 | 11 |
| Test Player | 24 | 18 |
| Test Player | 25 | 3 |
| Test Player | 26 | 7 |
| Test Player | 27 | 8 |
| Test Player | 28 | 3 |
| Test Player | 29 | 2 |
| Test Player | 30 | 2 |
| Test Player | 32 | 2 |
| Test Player | 33 | 11 |
| Test Player | 36 | 31 |
| Test Player | 37 | 11 |
| Test Player | 39 | 22 |
| Test Player | 40 | 9 |
| Unit3testA | 1 | 1 |
| Unit3testB | 1 | 1 |
| Venable , Ellis | 1 | 1 |
| Venable , Ellis | 5 | 1 |
| Venable , Ellis | 11 | 1 |
| editor@example.com | 1 | 6 |
| editor@example.com | 2 | 1 |
| editor@example.com | 3 | 2 |
| editor@example.com | 4 | 1 |
| sysadmin@adroit.games | 2 | 7 |
| sysadmin@adroit.games | 10 | 2 |
| sysadmin@adroit.games | 11 | 1 |
| sysadmin@adroit.games | 12 | 1 |
| sysadmin@adroit.games | 13 | 1 |
| sysadmin@adroit.games | 14 | 1 |
| sysadmin@adroit.games | 17 | 1 |
| sysadmin@adroit.games | 19 | 1 |
pilotTest1ArgumentEvent = pilotTest1 %>% filter(event_type == "argumentationEvent")
pilotTest1ArgumentEventClean = pilotTest1ArgumentEvent %>%
mutate(event_data = map(event_data, ~ fromJSON(.x, simplifyVector = TRUE))) %>%
unnest_wider(event_data) %>% data.frame()
pilotTest1ArgumentEventCleanOpen = pilotTest1ArgumentEventClean %>% filter(actionType == "argumentationSessionOpen")
pilotTest1ArgumentDates = pilotTest1ArgumentEventCleanOpen %>% mutate(ts = ymd_hms(timestamp, tz = "UTC"),
date = as_date(ts))
argument_daily_span = pilotTest1ArgumentDates %>% group_by(player_id, argumentationTitle) %>%
summarise(n_records = n(),
.groups = "drop") %>% data.frame()
knitr::kable(argument_daily_span, caption = "Table: Argumentation Open Records per Player")
| player_id | argumentationTitle | n_records |
|---|---|---|
| Alden Reese | Unit 3 - Pollution Upstream | 1 |
| Gonzalez, Yvonne | Unit 3 - Pollution Upstream | 1 |
| Kieren O’Bannon | Unit 3 - Pollution Upstream | 1 |
| Lewis, Saniyah | Unit 3 - Pollution Upstream | 1 |
| Test Player | Unit 1 - Argumentation Tutorial | 52 |
| Test Player | Unit 1 - Freshwater | 47 |
| Test Player | Unit 2 – Watershed | 6 |
| Test Player | Unit 3 - Pollution Upstream | 7 |
| Venable , Ellis | Unit 3 - Pollution Upstream | 1 |
| sysadmin@adroit.games | Unit 1 - Argumentation Tutorial | 1 |
| sysadmin@adroit.games | Unit 1 - Freshwater | 1 |
pilotTest1ArgumentEvent = pilotTest1 %>% filter(event_type == "argumentationEvent")
pilotTest1ArgumentEventClean = pilotTest1ArgumentEvent %>%
mutate(event_data = map(event_data, ~ fromJSON(.x, simplifyVector = TRUE))) %>%
unnest_wider(event_data) %>% data.frame()
pilotTest1ArgumentEventCleanOpen = pilotTest1ArgumentEventClean %>% filter(actionType == "argumentationSessionClose")
pilotTest1ArgumentDates = pilotTest1ArgumentEventCleanOpen %>% mutate(ts = ymd_hms(timestamp, tz = "UTC"),
date = as_date(ts))
argument_daily_span = pilotTest1ArgumentDates %>% group_by(player_id, argumentationTitle) %>%
summarise(n_records = n(),
.groups = "drop") %>% data.frame()
knitr::kable(argument_daily_span, caption = "Table: Argumentation Close Records per Player")
| player_id | argumentationTitle | n_records |
|---|---|---|
| Alden Reese | Unit 3 - Pollution Upstream | 2 |
| Gonzalez, Yvonne | Unit 3 - Pollution Upstream | 2 |
| Lewis, Saniyah | Unit 3 - Pollution Upstream | 2 |
| Test Player | Unit 1 - Argumentation Tutorial | 48 |
| Test Player | Unit 1 - Freshwater | 41 |
| Test Player | Unit 2 – Watershed | 7 |
| Test Player | Unit 3 - Pollution Upstream | 12 |
| sysadmin@adroit.games | Unit 1 - Argumentation Tutorial | 1 |
| sysadmin@adroit.games | Unit 1 - Freshwater | 1 |