Hi All,
I am working on RNAseq data analysis using DESeq2 R package. 
I havemy code `dds <- DESeqDataSetFromMatrix(countData = count.mat , colData = cond, design = ~Strain + Time)` to create the matrix. 
My confusion is with the design formula `design = ~Strain + Time` where I have `Strain` and `Time` variables to compare in my colData for my countData matrix. 

This is my `cond` matrix 
 

               Strain Time
    count1           1    1
    count2           1    1
    count4           1    2
    count5           1    2
    count13          2    1
    count14          2    1
    count16          2    2
    count17          2    2
    countX           2    3

First,
I want to understand the difference between these four designs that could go in the function `DESeqDataSetFromMatrix`:

    a) `design = ~Strain + Time + Strain:Time`
    b) `design = ~Strain + Time`
    c) `design = ~Time`
    and d) `design = ~Strain`

Second,

My understanding is that the DESeq2 takes the last variable in the design formula (here Time) as a control variable, so to test for different samples in Time group, I have these codes below. So, I want to know what the outputs of `resultNames(ddsTC)` really mean?

    ddsTC <- DESeqDataSet(dds, ~ Strain + Time ) ##For time
    ddsTC <- DESeq(ddsTC, test="LRT", reduced = ~Time )    #For Time
    
    resultsNames(ddsTC) 
     [1] "Intercept.1"     "Time_3_vs_1.1"   "Time_2_vs_1.1"   "Strain_2_vs_1.1"
This ends up not being a questions about DESeq2, but about how linear models work (the same nomenclature is used for ANOVAs). https://www.biostars.org/u/22850/ basically explained this in the comments, but I'll point out that everything from limma to a standard ANOVA works exactly like this.

> My understanding is that the DESeq2 takes the last variable in the design formula (here Time) as a control variable, so to test for different samples in Time group, I have these codes below. So, I want to know what the outputs of resultNames(ddsTC) really mean?

It doesn't take the last variable as a control, it just uses that one for plotting and output by default. So if you do `design=Strain + Time` and then do `results()` then the results will be for the `Time` effect.

`resultNames()` is giving you the names of the coefficients in your model.

    ddsTC <- DESeqDataSet(dds, ~ Strain + Time ) ##For time
    ddsTC <- DESeq(ddsTC, test="LRT", reduced = ~Time )    #For Time

Note that you're testing the effect of `Strain` above, not `Time` as suggested by the comment.

I strongly recommend familiarizing yourself with basic linear models. A pretty hefty chunk of the statistics used in bioinformatics boils down to that.