-
Notifications
You must be signed in to change notification settings - Fork 1
/
slack-metrics.qmd
131 lines (100 loc) · 4.18 KB
/
slack-metrics.qmd
1
2
3
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
31
32
33
34
35
36
37
38
39
40
41
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
---
title: "Slack"
format: html
embed-resources: true
execute:
message: false
code-fold: true
---
## Slack metrics
```{r}
#| include: false
library(tidyverse)
library(janitor)
library(NHSRplotthedots)
slack <- read_csv("20240426-slack.csv") |>
janitor::clean_names()
# Dates are character and have 4 digit years, replace with 2 digit years
# Then convert to date format ymd before finding start of month
slack_clean <- slack |>
mutate(new_date = gsub( "([0-9]{2})([0-9]{2})$" , "\\2", date),
new_date = as.Date(new_date, format = "%d/%m/%y"),
month = lubridate::floor_date(new_date, "month"))
```
Data is extracted from Slack Workspace Analytics and exported from `r min(slack_clean$new_date)` to `r max(slack_clean$new_date)`
## Active users
Whilst there is no standard for measuring community engagement there are three often used:
- Daily Active Users (DAU)
- Weekly Active Users (WAU)
- Monthly Active Users (MAU)
Slack doesn't provide Monthly Active Users.
Slack defines an Active member as a person who has read or sent a message in at least one channel or a direct message in the workspace.
```{r}
ggplot(slack_clean, aes(x = new_date, y = daily_active_members)) +
geom_line() +
geom_smooth() +
labs(x = "date",
y = "percentage",
title = "Daily Active members")
```
```{r}
ggplot(slack_clean, aes(x = new_date, y = weekly_active_members)) +
geom_line() +
geom_smooth() +
labs(x = "date",
y = "percentage",
title = "Monthly Active members")
```
## Last 6 months
Looking at the chart over 6 months shows consistent dips in activity at the weekend, as well as key holiday periods like Christmas and Easter.
```{r}
last_6_months <- slack_clean |>
filter(new_date >= lubridate::today() %m-% months(6)) |>
mutate(day_names = lubridate::wday(new_date, label = TRUE),
is_weekend = ifelse(day_names %in% c("Sat", "Sun"), 0, 1))
ggplot(last_6_months, aes(x = new_date, y = daily_active_members)) +
geom_line() +
geom_smooth() +
labs(x = "date",
y = "percentage",
title = "Daily Active members")
```
Removing the weekends and then using {NHSRplotthedots} to create an SPC chart:
```{r}
spc1<-last_6_months |>
filter(is_weekend == 1) |>
ptd_spc(value_field = daily_active_members,
date_field = new_date,
improvement_direction = "increase") # |> scale_x_date(date_labels="%b-%Y", date_breaks ="1 month")
plot(spc1) + theme(axis.text.x = element_text(angle = 45, hjust=0.5))#
```
## Active posters and readers
Built in Slack analytics show the active people in a workplace split by active members and active posting members.
Active members can mean people in the workspace who read or have posted which is a useful measure as knowledge sharing is a key part of the community.
```{r}
#| label: active-readers
posting_reading <- last_6_months |>
mutate(per_posters_readers = daily_members_posting_messages/daily_active_members * 100)
ggplot(posting_reading, aes(x = new_date, y = per_posters_readers)) +
geom_line() +
labs(x = "date",
y = "percentage",
title = "Percentage of daily members posting by daily active (posting and reading)") +
geom_smooth()+ theme(axis.text.x = element_text(angle = 45, vjust = 0.5 , hjust=0.5)) + scale_x_date(date_labels="%b-%Y", date_breaks ="1 month")
```
```{r}
posting_reading |>
select(new_date,
per_posters_readers) |>
mutate(day_names = lubridate::wday(new_date, label = TRUE),
is_weekend = ifelse(day_names %in% c("Sat", "Sun"), 0, 1)) |>
filter(is_weekend == 1) |>
ptd_spc(value_field = per_posters_readers,
date_field = new_date,
improvement_direction = "increase")
```
## Insights
A potential risk of concentrating on the high and low peaks of activity can be that they don't necessarily indicate healthy discussion or engagement.
However, a couple of insights are useful for communication plans relating to sharing knowledge:
- Interactions on Slack show a weekly pattern with weekends and public holidays seeing a drop in numbers.
- Distinct numbers of people posting was particularly high during the conference period in November 2023 as people were directed to Slack specifically to ask questions.