How do I contrast code two separate experimental variables that share a reference variable? In my experiment, participants were recorded saying a target phrase multiple times. For some of the trials, there were no experimental manipulations (control). In other trials, we applied pitch perturbations that differed by direction (up vs. down) and timing within the phrase (early, middle). So each timing condition had both direction conditions (early-up, early-down, middle-up, middle-down). The dependent variable is an acoustic measure of speech production (acoustic). 
The goal of the analysis is to see how each experimental variable compares with the control trials. The issue I am having is that I am unsure how to contrast code the variables since they both share the same control trials. This is how the table looks:

I am trying to run an analysis like this:
lmer(y ~ Direction * Timing + (1|subj), data = data)

However, there is obviously collinearity between the two variables because the control trials are the same with each. I want to analyze the main effect for each Direction and Timing but also the interactions between them (for example, upxearly vs. upxmiddle). 
If anyone has any advice for how to organize or contrast code this, I will be very appreciative. Thank you!
 A: If you never have any combination of 'up × timeControl' or 'early × directControl' then you can never actually compare the groups to the controls using a linear model with your data as is. 
As far as I can see you have two options: 


*

*Do not fit any kind of linear model to these data and instead just make comparisons visually (i.e. make some graphs to show differences), or;

*combine your factors to create a new single column. You could do this with:
data$Treatment <- paste(data$Direction, data$Timing, sep = ":")
This will make it a little harder to interpret, particularly for interactions, but as far as I can see it is the only way to fit a statistical model to these data.
From here you could use:
fit <- lmer(y ~ Treatment + (1|subj), data = data)
pm <- predictmeans(fit, modelterm = "Treatment", pairwise = T, adj = "holm")

The second line will give you a bunch of helpful statistics, provide you with all pairwise comparisons and as well as some plots to help you visualise differences. It also carries out a holm-bonferroni correction to keep the family wise error rate at 5%.
