Learn R Programming

vivainsights

Overview

This is an R package for analyzing and visualizing data from Microsoft Viva Advanced Insights (previously Microsoft Workplace Analytics).

With the vivainsights package, you can...

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

  2. Leverage advanced analytics functions which are built for Viva Insights metrics

  3. Integrate analysis of Viva Insights data with your R workflow seamlessly

This library is compatible with the latest implementation of the Viva Insights Analyst Workbench. For the R library compatible with the legacy implementation, please visit the wpa package website or GitHub repository .

Installation

# Install from CRAN:
install.packages("vivainsights")

# Install development version from GitHub:
pak::pak("microsoft/vivainsights")

Usage

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

Cheatsheet

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

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!

Copy Link

Version

Install

install.packages('vivainsights')

Monthly Downloads

457

Version

0.6.1

License

MIT + file LICENSE

Maintainer

Martin Chan

Last Published

May 12th, 2025

Functions in vivainsights (0.6.1)

collaboration_trend

Collaboration Time Trend
check_query

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

Collaboration - Stacked Area Plot
collaboration_line

Collaboration Time Trend - Line Chart
comma

Add comma separator for thousands
collaboration_fizz

Distribution of Collaboration Hours (Fizzy Drink plot)
check_inputs

Check whether a data frame contains all the required variable
collaboration_sum

Collaboration Summary
collaboration_rank

Collaboration Ranking
collaboration_dist

Distribution of Collaboration Hours as a 100% stacked bar
create_density

Create a density plot for any metric
create_dist

Horizontal 100 percent stacked bar plot for any metric
create_bar_asis

Create a bar chart without aggregation for any metric
create_line_asis

Create a line chart without aggregation for any metric
create_bar

Mean Bar Plot for any metric
copy_df

Copy a data frame to clipboard for pasting in Excel
create_fizz

Fizzy Drink / Jittered Scatter Plot for any metric
create_dt

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

Calculate the Lorenz Curve and Gini Coefficient in a Person Query
create_rank_combine

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

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

Distribution of Email Hours (Fizzy Drink plot)
email_line

Email Time Trend - Line Chart
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_boxplot

Box Plot for any metric
create_inc

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

Create a histogram plot for any metric
create_itsa

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

Time Trend - Line Chart for any metric
create_IV

Compute Information Value for Predictive Variables
email_trend

Email Hours Time Trend
create_tracking

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

Heat mapped horizontal bar plot over time for any metric
export

Export 'vivainsights' outputs to CSV, clipboard, or save as images
heat_colours

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

External Collaboration Summary
extract_date_range

Extract date period
external_line

External Collaboration Hours Time Trend - Line Chart
email_summary

Email Summary
email_rank

Email Hours Ranking
hrvar_count

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

Rank groups with high External Collaboration Hours
hrvar_count_all

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

Employee count over time
hrvar_trend

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

Identify employees who have churned from the dataset
jitter_metrics

Jitter metrics in a data frame
keymetrics_scan

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

Warn for extreme values by checking against a threshold
flag_em_ratio

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

Distribution of Email Hours as a 100% stacked bar
cut_hour

Convert a numeric variable for hours into categorical
meeting_line

Meeting Time Trend - Line Chart
identify_privacythreshold

Identify groups under privacy threshold
meeting_rank

Meeting Hours Ranking
external_dist

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

Manager 1:1 Time Trend - Line Chart
one2one_rank

Manager 1:1 Time Ranking
create_period_scatter

Period comparison scatter plot for any two metrics
flag_ch_ratio

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

Extract HR attribute variables
generate_report

Generate HTML report with list inputs
generate_report2

Generate HTML report based on existing RMarkdown documents
create_rank

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

Horizontal stacked bar plot for any metric
create_scatter

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

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

Distribution of Meeting Hours as a 100% stacked bar
external_fizz

Distribution of External Collaboration Hours (Fizzy Drink plot)
flag_outlooktime

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

Meeting Summary
meeting_tm_report

Generate a Meeting Text Mining report in HTML
meeting_fizz

Distribution of Meeting Hours (Fizzy Drink plot)
identify_outlier

Identify metric outliers over a date interval
g2g_data

Sample Group-to-Group dataset
identify_nkw

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

Plot Usage Segments over time
totals_bind

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

Import a query from Viva Insights Analyst Experience
%>%

Pipe operator
identify_datefreq

Identify date frequency based on a series of dates
identify_habit

Identify whether a habitual behaviour exists over a given interval of time
keymetrics_scan_asis

Run a summary of Key Metrics without aggregation
identify_holidayweeks

Identify Holiday Weeks based on outliers
identify_inactiveweeks

Identify Inactive Weeks
maxmin

Max-Min Scaling Function
p2p_data_sim

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

Sample person-to-person dataset
network_summary

Summarise node centrality statistics with an igraph object
one2one_dist

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

Fabricate a 'Total' HR variable
is_date_format

Identify whether string is a date format
tm_clean

Clean subject line text prior to analysis
tm_cooc

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

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

Meeting Hours Time Trend
mt_data

Sample Meeting Query dataset
pad2

Create the two-digit zero-padded format
pairwise_count

Perform a pairwise count of words by id
us_to_space

Replace underscore with space
prep_query

Prepare variable names and types in query data frame for analysis
pq_data

Sample Person Query dataset
tm_freq

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

Manager 1:1 Time Trend
one2one_sum

Manager 1:1 Time Summary
track_HR_change

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

Generate a time stamp
tm_wordcloud

Generate a wordcloud with meeting subject lines
identify_usage_segments

Identify Usage Segments based on a metric
one2one_fizz

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

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

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

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

Generate a Data Validation report in HTML
theme_wpa

Main theme for 'vivainsights' visualisations
theme_wpa_basic

Basic theme for 'vivainsights' visualisations
wrap_text

Wrap text based on character threshold
xicor

Calculate Chatterjee's Rank Correlation Coefficient
read_preamble

Read preamble
rgb2hex

Convert rgb to HEX code
vivainsights-package

vivainsights: Analyze and Visualize Data from 'Microsoft Viva Insights'
wrap

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

Generate a Information Value HTML Report
afterhours_dist

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

Identify whether variable is an IDate class.
afterhours_rank

Rank groups with high After-Hours Collaboration Hours
afterhours_fizz

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

After-hours Collaboration Time Trend - Line Chart
camel_clean

Convert "CamelCase" to "Camel Case"
afterhours_trend

After-Hours Time Trend
anonymise

Anonymise a categorical variable by replacing values
afterhours_summary

Summary of After-Hours Collaboration Hours