If you get a significant $p$-value from an ANOVA, how can you tell which groups are different? I'm performing an experiment and have gotten a $p$-value that is supposedly significant with a value of $0.00001$. Now my question is, how can I tell which groups are different from one another?
 A: Say you have some anova model in R like the following:
ANOVA <- aov(y ~ x)
This model estimates the means of each of $k$ categories in x and an omnibus test can be performed to test whether there is significant deviation from all means being equal:
$\text{H}_0: \mu_1=\mu_2=\dots=\mu_k$
You can produce a summary in R, which will report the $p$-value for this omnibus test (summary(ANOVA)). This is the $p $-value you obtained in your question. There is some difference among means, you don't know where.
Post hoc
To find out which means differ from which, you will need to perform a post hoc analysis - an analysis after the initial ANOVA. This is usually Tukey's honest significant difference test (HSD). To do this in R, simply run:  
post.hoc <- TukeyHSD(ANOVA) 
You can then print it to see the estimated differences, ranges of the confidence intervals and $p$-values. These $p$-values are already corrected for multiple testing, so you don't need to worry about that (hence p adj in the output):  
print(post.hoc)
You can also plot the confidence intervals, although the labels usually don't fit in the plot, so you may want to adjust the graphical parameters, for example:
par(mar = c(5, 7, 4, 3)+0.1) # bottom, left, top, right
plot(post.hoc, las = 1)
par(mar = c(5, 4, 4, 3)+0.1) # back to default
Confidence intervals which do not include zero are significant in this case.
