Learn R Programming

wpa

Analyze and Visualize Viva Leader Insights data

This is an R package for analyzing and visualizing data from Microsoft Workplace Analytics. For analyzing data from Microsoft Viva Insights, please see our other package vivainsights.

With the wpa package, you can...

  1. Run prebuilt analysis and visualizations off advanced insights data with settings for HR variables, privacy threshold, etc.

  2. Generate prebuilt interactive HTML reports, which cover specific areas e.g. collaboration, connectivity

  3. Leverage advanced analytics functions, such as text mining and hierarchical clustering, which are built for Workplace Analytics metrics

  4. Integrate analysis of Leader Insights data with your R workflow seamlessly

Here is an example of wpa in action:


:rocket: Users

To get started with the package, please see the following links:

Also check out our package cheat sheet for a quick glimpse of what wpa offers:


:hammer: Developers

We welcome contributions to the package!

Contributing code

If you would like contribute code to the repo, please read our Contributor Guide and Developer Guide. This documentation should provide you all the information you will need to get started.

Issues or Feature Requests

If you would like to log an issue or submit a feature request, please create a new issue or comment on an existing issue on GitHub Issues on this repo.

Reporting Security Issues

Please do not report security vulnerabilities through public GitHub issues. Please read our Security document for more details.

Changelog

See NEWS.md for the package changelog.


Related repositories


Code of Conduct

We would ask you to please read the Microsoft Open Source Code of Conduct prior to engaging with this package.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.


Finding this project useful?

:star: Please star this repository to keep us going!

Contributors to the GitHub repo:

See the full list of our contributors here.

Copy Link

Version

Install

install.packages('wpa')

Monthly Downloads

1,398

Version

1.9.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Martin Chan

Last Published

August 21st, 2023

Functions in wpa (1.9.0)

create_bar

Mean Bar Plot for any metric
create_fizz

Fizzy Drink / Jittered Scatter Plot for any metric
create_boxplot

Box Plot for any metric
create_line_asis

Create a line chart without aggregation for any metric
create_period_scatter

Period comparison scatter plot for any two metrics
create_inc

Create an incidence analysis reflecting proportion of population scoring above or below a threshold for a metric
create_rank

Rank all groups across HR attributes on a selected Viva Insights metric
create_tracking

Create a line chart that tracks metrics over time with a 4-week rolling average
create_rank_combine

Create combination pairs of HR variables and run 'create_rank()'
create_stacked

Horizontal stacked bar plot for any metric
create_scatter

Create a Scatter plot with two selected Viva Insights metrics (General Purpose)
create_line

Time Trend - Line Chart for any metric
create_sankey

Create a sankey chart from a two-column count table
email_rank

Email Hours Ranking
em_data

Sample Hourly Collaboration data
cut_hour

Convert a numeric variable for hours into categorical
email_fizz

Distribution of Email Hours (Fizzy Drink plot)
email_summary

Email Summary
email_trend

Email Hours Time Trend
create_trend

Heat mapped horizontal bar plot over time for any metric
email_dist

Distribution of Email Hours as a 100% stacked bar
email_line

Email Time Trend - Line Chart
dv_data

Sample Standard Person Query dataset for Data Validation
external_fizz

Distribution of External Collaboration Hours (Fizzy Drink plot)
extract_date_range

Extract date period
flag_ch_ratio

Flag unusual high collaboration hours to after-hours collaboration hours ratio
extract_hr

Extract HR attribute variables
external_sum

External Collaboration Summary
external_line

External Collaboration Hours Time Trend - Line Chart
external_dist

Distribution of External Collaboration Hours as a 100% stacked bar
external_network_plot

Plot External Network Breadth and Size as a scatter plot
external_rank

Rank groups with high External Collaboration Hours
export

Export 'wpa' outputs to CSV, clipboard, or save as images
generate_report2

Generate HTML report based on existing RMarkdown documents
flag_em_ratio

Flag Persons with unusually high Email Hours to Emails Sent ratio
flag_outlooktime

Flag unusual outlook time settings for work day start and end time
hrvar_count

Create a count of distinct people in a specified HR variable
flex_index

Compute a Flexibility Index based on the Hourly Collaboration Query
g2g_data

Sample Group-to-Group dataset
flag_extreme

Warn for extreme values by checking against a threshold
generate_report

Generate HTML report with list inputs
heat_colours

Generate a vector of n contiguous colours, as a red-yellow-green palette.
hr_trend

Employee count over time
identify_privacythreshold

Identify groups under privacy threshold
identify_churn

Identify employees who have churned from the dataset
hrvar_count_all

Create count of distinct fields and percentage of employees with missing values for all HR variables
hrvar_trend

Track count of distinct people over time in a specified HR variable
identify_query

Identify the query type of the passed data frame
identify_inactiveweeks

Identify Inactive Weeks
identify_outlier

Identify metric outliers over a date interval
identify_nkw

Identify Non-Knowledge workers in a Person Query using Collaboration Hours
identify_holidayweeks

Identify Holiday Weeks based on outliers
identify_datefreq

Identify date frequency based on a series of dates
import_wpa

Import a Workplace Analytics Query
identify_shifts

Identify shifts based on outlook time settings for work day start and end time
jitter_metrics

Jitter metrics in a data frame
keymetrics_scan

Run a summary of Key Metrics from the Standard Person Query data
is_date_format

Identify whether string is a date format
keymetrics_scan_asis

Run a summary of Key Metrics without aggregation
identify_shifts_wp

Identify shifts based on binary activity
internal_network_plot

Plot Internal Network Breadth and Size as a scatter plot
identify_tenure

Tenure calculation based on different input dates, returns data summary table or histogram
import_to_fst

Read a Workplace Analytics query in '.csv' using and create a '.fst' file in the same directory for faster reading
meeting_extract

Extract top low-engagement meetings from the Meeting Query
meeting_rank

Meeting Hours Ranking
map_IV

Calculate Weight of Evidence (WOE) and Information Value (IV) between multiple predictors and a single outcome variable, returning a list of statistics.
meeting_skim

Produce a skim summary of meeting hours
meeting_quality

Run a meeting habits / meeting quality analysis
meeting_dist

Distribution of Meeting Hours as a 100% stacked bar
meeting_summary

Meeting Summary
meeting_fizz

Distribution of Meeting Hours (Fizzy Drink plot)
maxmin

Max-Min Scaling Function
meeting_line

Meeting Time Trend - Line Chart
meetingtype_summary

Create a summary bar chart of the proportion of Meeting Hours spent in Long or Large Meetings
network_describe

Uncover HR attributes which best represent a population for a Person to Person query
mgrcoatt_dist

Manager meeting coattendance distribution
meeting_trend

Meeting Hours Time Trend
meetingtype_dist

Distribution of Meeting Types by number of Attendees and Duration
mgrrel_matrix

Manager Relationship 2x2 Matrix
mt_data

Sample Meeting Query dataset
meeting_tm_report

Generate a Meeting Text Mining report in HTML
meetingtype_dist_ca

Meeting Type Distribution (Ways of Working Assessment Query)
meetingtype_dist_mt

Meeting Type Distribution (Meeting Query)
one2one_trend

Manager 1:1 Time Trend
network_summary

Summarise node centrality statistics with an igraph object
one2one_freq

Frequency of Manager 1:1 Meetings as bar or 100% stacked bar chart
one2one_fizz

Distribution of Manager 1:1 Time (Fizzy Drink plot)
network_p2p

Perform network analysis with the person-to-person query
one2one_dist

Distribution of Manager 1:1 Time as a 100% stacked bar
one2one_line

Manager 1:1 Time Trend - Line Chart
network_g2g

Create a network plot with the group-to-group query
one2one_sum

Manager 1:1 Time Summary
one2one_rank

Manager 1:1 Time Ranking
pad2

Create the two-digit zero-padded format
p_test

Calculate the p-value of the null hypothesis that two outcomes are from the same dataset
period_change

Plot the distribution of percentage change between periods of a Viva Insights metric by the number of employees.
p2p_data_sim

Simulate a person-to-person query using a Watts-Strogatz model
pairwise_count

Perform a pairwise count of words by id
personas_hclust

Create hierarchical clusters of selected metrics using a Person query
plot_hourly_pat

Internal function for plotting the hourly activity patterns.
plot_flex_index

Plot a Sample of Working Patterns using Flexibility Index output
%>%

Pipe operator
plot_WOE

Plot WOE graphs with an IV object
theme_wpa

Main theme for 'wpa' visualisations
subject_scan

Count top words in subject lines grouped by a custom attribute
subject_classify

Create a new logical variable that classifies meetings by patterns in subject lines
rgb2hex

Convert rgb to HEX code
sq_data

Sample Standard Person Query dataset
read_preamble

Read preamble
remove_outliers

Remove outliers from a person query across time
subject_validate_report

Generate Meeting Text Mining report in HTML for Common Exclusion Terms
standardise_pq

Standardise variable names to a Standard Person Query
subject_validate

Scan meeting subject and highlight items for review
totals_bind

Row-bind an identical data frame for computing grouped totals
track_HR_change

Sankey chart of organizational movement between HR attributes and missing values (outside company move) (Data Overview)
theme_wpa_basic

Basic theme for 'wpa' visualisations
tstamp

Generate a time stamp
totals_col

Fabricate a 'Total' HR variable
tm_wordcloud

Generate a wordcloud with meeting subject lines
tm_cooc

Analyse word co-occurrence in subject lines and return a network plot
tm_clean

Clean subject line text prior to analysis
tm_freq

Perform a Word or Ngram Frequency Analysis and return a Circular Bar Plot
totals_reorder

Reorder a value to the top of the summary table
workloads_fizz

Distribution of Work Week Span (Fizzy Drink plot)
workloads_dist

Distribution of Work Week Span as a 100% stacked bar
us_to_space

Replace underscore with space
wellbeing_report

Generate a Wellbeing Report in HTML
workloads_line

Workloads Time Trend - Line Chart
workpatterns_area

Create an area plot of emails and IMs by hour of the day
workloads_summary

Work Week Span Summary
workloads_rank

Rank all groups across HR attributes for Work Week Span
workloads_trend

Work Week Span Time Trend
validation_report

Generate a Data Validation report in HTML
wrap

Add a character at the start and end of a character string
workpatterns_hclust

Create a hierarchical clustering of email or IMs by hour of day
wrap_text

Wrap text based on character threshold
workpatterns_classify_bw

Classify working pattern week archetypes using a rule-based algorithm, using the binary week-based ('bw') method.
workpatterns_rank

Create a rank table of working patterns
workpatterns_classify

Classify working pattern personas using a rule based algorithm
workpatterns_classify_pav

Classify working pattern personas using a rule based algorithm, using the person-average volume-based ('pav') method.
workpatterns_report

Generate a report on working patterns in HTML
IV_by_period

Identify the WPA metrics that have the biggest change between two periods.
afterhours_fizz

Distribution of After-hours Collaboration Hours (Fizzy Drink plot)
afterhours_dist

Distribution of After-hours Collaboration Hours as a 100% stacked bar
afterhours_trend

After-Hours Time Trend
IV_report

Generate a Information Value HTML Report
afterhours_summary

Summary of After-Hours Collaboration Hours
afterhours_line

After-hours Collaboration Time Trend - Line Chart
LjungBox

Ljung and Box Portmanteau Test
GetResiduals

Extract Residuals from ARIMA, VAR, or any Simulated Fitted Time Series Model
afterhours_rank

Rank groups with high After-Hours Collaboration Hours
check_inputs

Check whether a data frame contains all the required variable
anonymise

Anonymise a categorical variable by replacing values
check_query

Check a query to ensure that it is suitable for analysis
collaboration_fizz

Distribution of Collaboration Hours (Fizzy Drink plot)
capacity_report

Generate a Capacity report in HTML
coaching_report

Generate a Coaching report in HTML
camel_clean

Convert "CamelCase" to "Camel Case"
collaboration_dist

Distribution of Collaboration Hours as a 100% stacked bar
collaboration_area

Collaboration - Stacked Area Plot
calculate_IV

Calculate Weight of Evidence (WOE) and Information Value (IV) between a single predictor and a single outcome variable.
create_ITSA

Estimate an effect of intervention on every Viva Insights metric in input file by applying single-group Interrupted Time-Series Analysis (ITSA)
collaboration_rank

Collaboration Ranking
collaboration_report

Generate a Collaboration Report in HTML
collaboration_line

Collaboration Time Trend - Line Chart
combine_signals

Combine signals from the Hourly Collaboration query
comma

Add comma separator for thousands
connectivity_report

Generate a Connectivity report in HTML
collaboration_trend

Collaboration Time Trend
copy_df

Copy a data frame to clipboard for pasting in Excel
collaboration_sum

Collaboration Summary
create_dt

Create interactive tables in HTML with 'download' buttons.
create_hist

Create a histogram plot for any metric
create_dist

Horizontal 100 percent stacked bar plot for any metric
create_bubble

Create a bubble plot with two selected Viva Insights metrics (General Purpose), with size representing the number of employees in the group.
create_bar_asis

Create a bar chart without aggregation for any metric
create_IV

Calculate Information Value for a selected outcome variable
create_density

Create a density plot for any metric