There are many ways in which you can create a filter in Displayr. In some more complex scenarios creating a filter may require basic coding. You must do this if you want your filter to incorporate some sort of calculation across respondents or comparison of responses within each respondent. This article describes how to use simple R code to create a filter based on a single-response question.
- A data set containing at least one single-response variable.
- Understanding of common R conditional operators (below), see How to Work with Conditional R Formulas for more detail:
Method - Create an R filter variable
- Hover over a variable in the Data Sets tree and click on the + that appears then Custom Code > R - Numeric. A new numeric variable called newvariable will appear in the Data Sets tree.
- Change the Label and Name of the variable in the object inspector via Properties > GENERAL to the desired text (e.g., Filter_variable).
- Check Usable as a filter.
Method - Create the R filter logic
- Under Properties > R CODE of your filter variable, enter the R code matching your binary filter condition. If the condition is met, the variable will return a value of 1 (which will be used to filter your data). If the condition is not met, the variable will return a 0 value.
- Note, instead of typing the variable name, you can select the variables you wish to include in your R code and drag them from the Data Sets tree into Properties > R CODE for your filter variable.
- With R you can reference either the variable name or the variable set name. In cases when a variable name contains spaces, the label needs to be wrapped using ` `. For example, if we have a variable called "Q1" with the label of "Q1. How old are you?", in R we can reference this as either Q1 or `Q1. How old are you?`.
Below are examples of using R code to create filters:
d1 response equals the 25 to 29 category - note if there is missing data in the variable use the %in% operator below:
d1 == "25 to 29"
d1 response equals the 25 to 29 or 45 to 49 category (or more):
d1 %in% c("25 to 29", "45 to 49")
Q1 response equals 1:
Q1<5 | Q2==2
Q1 is greater than or equal to 25 AND less than or equal to 100:
Q1>=25 & Q1<=100
And here are the reverse of the above filter conditions using the ! operator.
Q1 response is not 1:
Q1 is NOT less than 5 AND Q2 is NOT 2:
!(Q1<5 | Q2==2)
Q1 is NOT greater than or equal to 25 AND NOT less than or equal to 100:
!(Q1>=25 & Q1<=100)
Each Q1 response is NOT greater than the total sum of Q2, see How to Perform Mathematical Calculations Using R for more mathematical functions:
The Q1 response is less than the Q2 response of the respondent:
Q1 < Q2