如何在 R 中按组创建热图矩阵?

How to create matrix for heatmap by group in R?

我有一个示例数据如下,我想创建一个热图,其中根据 3 个招聘站点(站点)和 5 个招聘年(年)显示平均睡眠持续时间(SLP)。

SLP site year sex
8.6  1   2008  1
7.2  1   2005  2
6.4  2   2006  2
9.5  3   2007  2
6.1  2   2009  2
5.1  3   2008  1
2.1  2   2006  2
3.6  1   2001  1
8.6  1   2008  1
7.2  1   2005  2
6.4  2   2006  2
9.5  3   2007  2
6.1  2   2009  2
5.1  3   2008  1
2.1  2   2006  2
3.6  1   2001  1

在我要制作的热图中,x 轴和 y 轴分别是年份和地点,并且每个单元格都包括睡眠持续时间的平均持续时间。

我不知道如何从数据框中制作矩阵来制作热图。 我该怎么做?

有很多选择,这也取决于你想如何创建热图。如果你想使用ggplot2那么你不需要修改data.frame。例如,这应该有效:

txt <- "SLP site year sex
8.6  1   2008  1
7.2  1   2005  2
6.4  2   2006  2
9.5  3   2007  2
6.1  2   2009  2
5.1  3   2008  1
2.1  2   2006  2
3.6  1   2001  1
8.6  1   2008  1
7.2  1   2005  2
6.4  2   2006  2
9.5  3   2007  2
6.1  2   2009  2
5.1  3   2008  1
2.1  2   2006  2
3.6  1   2001  1"

d <- read.table(text = txt, header = TRUE)
d$year <- factor(d$year) # make year a factor.

ggplot(d, aes(x = site, y = year, fill = SLP)) + geom_tile()