Использование xtabs
:
xt <- xtabs(col3 ~ col2 + col1)
дает:
> xt
col1
col2 5 7 9 12
0.5 1.161110 2.718960 2.064090 1.299615
1 1.341047 3.012732 3.913285 1.261958
3 1.435078 2.579303 3.079639 1.158850
или используйте ftable(xt)
, чтобы получить немного другой результат.
tapply
также будет работать в качестве альтернативы xtabs
:
tapply(col3, data.frame(col2, col1), c)
Если вы хотите разбить клетки, попробуйте:
library(Hmisc)
print.char.matrix(xt, col.names = TRUE)
дает:
+----+--------+--------+--------+--------+
|col2| 5 | 7 | 9 | 12 |
+----+--------+--------+--------+--------+
| 0.5| 1.16111| 2.71896| 2.06409|1.299615|
+----+--------+--------+--------+--------+
| 1|1.341047|3.012732|3.913285|1.261958|
+----+--------+--------+--------+--------+
| 3|1.435078|2.579303|3.079639| 1.15885|
+----+--------+--------+--------+--------+
Примечание
Вход в воспроизводимой форме:
col1 <- c(5, 5, 7, 5, 12, 7, 9, 9, 12, 12, 9, 7)
col2 <- c(3.0, 0.5, 1.0, 1.0, 0.5, 0.5, 1.0, 0.5, 1.0, 3.0, 3.0, 3.0)
col3 <- c(1.435078, 1.161110, 3.012732, 1.341047, 1.299615, 2.718960, 3.913285,
2.064090, 1.261958, 1.158850, 3.079639, 2.579303)