我有一个包含3列的数据集.前两列具有以下来自实验的输入值,并且是因子:
col1=[5, 5, 7, 5, 12, 7, 9, 9, 12, 12, 9, 7]
col2=[3.0, 0.5, 1.0, 1.0, 0.5, 0.5, 1.0, 0.5, 1.0, 3.0, 3.0, 3.0]
Run Code Online (Sandbox Code Playgroud)
这些组合的结果中的第三列:
col3=[1.435078, 1.161110, 3.012732, 1.341047, 1.299615, 2.718960, 3.913285, 2.064090, 1.261958, 1.158850, 3.079639, 2.579303]
Run Code Online (Sandbox Code Playgroud)
我想要的是使用表格左侧的单个column2值和表格上方的列1值来显示数据,并且列3的值与两个因子的交集处显示的每个唯一因子组合相关.理想情况下,这看起来像这样:
| | 5 | 7 | 9 | 12 |
|-----|------|------|------|------|
| 0.5 | 1.16 | 2.72 | 3.91 | 1.30 |
| 1.0 | 1.34 | 3.01 | 2.06 | 1.26 |
| 3.0 | 1.43 | 2.58 | 3.08 | 1.16 |
Run Code Online (Sandbox Code Playgroud)
我需要使用什么函数来生成这种简单的数据可视化?我试过table(),xtab(),list(),等人,但我似乎无法使用Google的小时后弄明白.
用途xtabs:
xt <- xtabs(col3 ~ col2 + col1)
Run Code Online (Sandbox Code Playgroud)
赠送:
> 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
Run Code Online (Sandbox Code Playgroud)
或者ftable(xt)用来获得略有不同的输出.
tapply也可以替代xtabs:
tapply(col3, data.frame(col2, col1), c)
Run Code Online (Sandbox Code Playgroud)
如果你想在细胞周围破折号,那么试试:
library(Hmisc)
print.char.matrix(xt, col.names = TRUE)
Run Code Online (Sandbox Code Playgroud)
赠送:
+----+--------+--------+--------+--------+
|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|
+----+--------+--------+--------+--------+
Run Code Online (Sandbox Code Playgroud)
可重复形式的输入是:
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)
Run Code Online (Sandbox Code Playgroud)