Create a multi-wave project

Updated at October 3rd, 2022

This tutorial shows how to create a multi-wave project using the project set up from a previous wave of the same study. If you want to create a multi-wave project and set up the questions from scratch, check out:

Combine new waves of data with prior waves

With each new wave of data a new project space is created. We create the new space by duplicating (click for tutorial) the original project. This involves bringing over the data and organization structure from the prior wave. 

Use prior wave’s “elements” setup

In the duplicate a workspace tutorial we show how you how to copy elements from one workspace to another. 

The elements configuration determines the organization of the project (i.e. question order, titles, formats, etc...). Copying elements over is useful for tracking studies because the bulk of the survey stays the same or is very similar to the prior wave, so keeping the same organization saves a lot of time. 

Download prior wave data

In the data tab of the prior wave find the "Primary" data file. It could be a blue data table, or a green process. 

Click into the "Primary" data table or process, and download as CSV. Save this file under a name like "process_w1" or "main_w1" etc.

Upload prior wave data as a table in the new project

In the new project space, the data file in "main" is the recent wave of data. Create a new data table for prior wave data. 

Name the data table "process_w1" or something that represents the prior wave. Drop in the "Primary" file from the prior wave that you saved as a CSV. 

Use a process to merge new and prior data

After you add the prior wave's data to the new project space, create a new process by pressing on the "New process" button. 

First, set the new process to "Primary" (click the button, it will turn yellow). This process will combine the prior and current waves, so you'll want it to be the primary source of data for the project. 

Click"Edit Run".

Add the code below that takes the data tables and creates a simple stack. "Run" the process. 

Simple stack code

var W1 = data["process_w1"] //define prior wave file

var W2 = data["main"] //define W2 (current wave) file

var rows = Protobi.stack_rows([W1 ,W2]); //stack prior and current waves of data

return rows; //return the result


After you run the data process, open the project and check that the N size is equal to the number of all respondents across all waves. 

How to create a “wave” variable

If you don't already have a "wave" variable in your survey we can create one in Protobi. This variable is useful when filtering on particular waves of data and for crosstab wave comparisons.

In the same data process used to combine the multiple wave of data, we can define a wave variable. Create separate ".forEach" functions for each data table. Create a variable "row.wave" and assign it the appropriate value.


var W1 = data["process_w1"] //define prior wave file

var W2 = data["main"] //define W2 (current wave) file

//data from W1 will have wave = 1


    row.wave = "1";


//data from W2 will have wave = 2


    row.wave = "2";


var rows = Protobi.stack_rows([W1 ,W2]); //stack prior and current waves of data

return rows; //return the result


The result is an element that you can click to filter on, use to set global filters and use as a crosstab banner. 

Survey changes between waves

If your survey is exactly the same between waves, and you're using the same "elements" configuration then you shouldn't need to make any changes to the project space. However, if you added/dropped questions between waves, then the new questions will need to be set up and the dropped questions should be moved or hidden from view. 

After you combine the current wave of data with prior waves, any new questions that were added to the survey will appear as new elements in "fields". There might be some variables that were already organized into the "fields" tab from the prior wave's elements setup, but new questions will be at the very end of "fields' list of children. 

You can create a new tab with a name like "new_wave2" and move the new questions there, or you move the questions to the main sections of the survey. Set up the questions like you would in any other survey.

Use global filters/scenarios to organize tracking studies

In tracking studies, global filters are used to limit the survey to certain waves of data. Global filters limit all analysis including current and baseline filters, whereas adding a scenario is the same as pressing on values to filter and does not affect the baseline scenario. 

In the example below, we have global filters that limit the baseline to just wave 2 data. Then we layer on a scenario that filters for respondents that fall under "GP" speciality. 

Scenarios are useful because you can change the current filter to a saved pre-set without leaving the tab that you are currently on. Additionally being able to save current filters as a named scenario is handy when the subsets you want to analyze are dependent on many elements, and it takes a lot of clicking to filter to the desired subset. 

Update/refresh current wave data

To update current wave data in tracking study upload the new data file into the "main" data table and re-run the process. For more information see the update project data tutorial. 

Was this article helpful?