If I have five levels of a categorical predictor, is there any way to get coefficients for each level? I have a categorical predictor with five levels. Every coding scheme I find produces four coefficients. What should I do if I don't have a natural reference level, and would like to see the effect of each level of the factor (as compared to the mean)?
I'll also add that this is a linear mixed effects model. Here is some code.
set.seed(3)

library(data.table)
library(lme4)

a <- rep(1:5, times = 20)
ppt <- rep(101:110, each = 10)
item <- rep(1:10, times = 10)
dv <- rnorm(n = 100)

data <- data.table(cbind(ppt, item, a, dv))

data$ppt <- as.factor(data$ppt)
data$item <- as.factor(data$item)
data$a <- as.factor(data$a)

m <- lmer(dv ~ a + (1|ppt) + (1|item), data = data)

Edit: 
Changing the reference level changes the values of all coefficients.
data$a <- relevel(data$a, ref="2")
m2 <- lmer(dv ~ a + (1|ppt) + (1|item), data = data)

 A: The treatment-contrast default in R, which uses one level of a categorical predictor as reference and describes other levels in comparison against that reference, is not your only choice. This UCLA IDRE web page goes into detail on 9 different ways to set up a design matrix for categorical variables. As you "would like to see the effect of each level of the factor (as compared to the mean)," deviation coding would be the way to go. In R, the contr.sum() function provides the design matrix for deviation coding.
Note, however, that you might need to be careful in interpreting those values. The overall mean of your data points will necessarily depend on the relative numbers and mean values of each of the groups, and might not necessarily be representative of what's going on in the population. With contr.sum() for deviation coding, the reported intercept against which levels are compared is instead the mean among all levels unweighted by the number in each group, as noted in the UCLA IDRE web page. Then again, that might not be representative of what's going on in the population.
With 5 levels of a categorical predictor you will still only get 5 parameter values returned, that intercept and coefficients for differences of 4 of the 5 levels from the intercept. A simple work-around if you want to get a corresponding value for the reference level (the last level, with contr.sum()) is to change the reference level of the factor and repeat the analysis. You will lose the coefficient for the new reference level but will gain that for the former reference level while the others remain the same.
Some find the approaches provided by the emmeans package useful in situations involving unbalanced designs, as it weights all cells in a design equally. It has extensive facilities for analysis and prediction with many types of models, and the package author frequently visits this site. As a comment from @rvl points out, that package provides a particularly simple solution to your problem. After you use the emmeans() function on your regression model object m, the contrast() function applied to the resulting emmGrid object provides what you are looking for as the default contrast, eff.emmc, comparing all levels against the average over all levels.
A: When I have five levels of a categorical variable and all are of equal importance, I simply choose the one with the highest amount of observations as my base.
If you want to add the mean as a base, simply add the mean value as a level in your categorical variable and choose that as the base.
I don't know how to do this in R as I use Stata, but another way (statistically) would be to dichotomize your categorical variable into five variables, adding the mean value as a sixth variable and then including the five variables in the model but not the sixth (mean). This would be equivalent to selecting it as a base.
