来自 SummarySE 函数 R 的出版就绪摘要 table
Publication-ready summary table from SummarySE function, R
我正在尝试创建平均值 ± 标准误差的摘要 table。到目前为止,我已经成功地从 SummarySE 函数中提取了 mean 和 se 列,但是我现在卡住了,无法弄清楚如何获取列名和行名。
数据:
structure(list(TREATMENT = c("A", "A", "A", "B", "B", "B", "C",
"C", "C", "D", "D", "D", "A", "A", "A", "B", "B", "B", "C", "C",
"C", "D", "D", "A", "A", "A", "B", "B", "B", "C", "C", "C", "D",
"D"), TIME = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), `Species 1` = c(1.64963636363636,
1.6574, 1.58190909090909, 1.6365, 1.75075, 1.83825, 2.247, 1.95557142857143,
2.35236363636364, 1.82253333333333, 1.37785714285714, 1.37892857142857,
2.952125, 3.33311111111111, 3.0967, 3.3912, 3.89709090909091,
3.51207692307692, 6.6176, 8.41072727272727, 7.3625, 7.19133333333333,
4.88216666666667, 4.770625, 28.371125, 6.8786, 4.10457142857143,
13.232, 8.66828571428571, 14.6534615384615, 51.7823333333333,
42.5318333333333, 20.2263333333333, 13.396), `Species 2` = c(2.36021428571429,
2.30930769230769, 3.01018181818182, 2.0195, 1.97107142857143,
2.07614285714286, 1.85307142857143, 2.2695, 2.29286666666667,
1.9504375, 1.95207142857143, 2.2144375, 2.57385714285714, 2.865,
2.92928571428571, 2.8453, 2.63855555555556, 4.15657142857143,
2.807375, 3.554, 6.12177777777778, 2.65541666666667, 3.7972,
1.285, 4.755, 4.271, 2.5925, 2.83158333333333, 4.638, 16.8010833333333,
13.1841666666667, 20.418, 3.24075, 3.0115), `Species 3` = c(2.1960625,
2.28214285714286, 3.05583333333333, 2.16986666666667, 2.06655,
2.54166666666667, 1.81271428571429, 1.89566666666667, 2.3227,
2.80616666666667, 2.05, 1.97592857142857, 3.44611111111111, 1.745,
2.9208, 4.6525, 3.89709090909091, 2.69244444444444, 2.7464, 5.93042857142857,
5.18888888888889, 3.8943125, 4.054, 6.11511111111111, 2.518125,
5.2216, 5.16908333333333, 2.59, 2.55716666666667, 9.12085714285714,
31.5835714285714, 17.227, 5.98033333333333, 5.21509090909091),
`Species 4` = c(2.00981818181818, 2.7604, 3.5535, 2.39085714285714,
3.00138888888889, 2.835, 2.25311111111111, 3.00791666666667,
2.55933333333333, 2.13933333333333, 2.331, 2.94761111111111,
3.66525, 7.304125, 3.14788888888889, 7.37175, 5.1192, 4.46957142857143,
2.73258333333333, 15.4874166666667, 5.9237, 4.81615384615384,
3.7743, 8.0213, 28.192, 17.6561111111111, 17.3084375, 7.81390909090909,
3.849, 9.618, 53.8383, 10.2361111111111, 17.9905454545455,
5.6655)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-34L), .Names = c("TREATMENT", "TIME", "Species 1", "Species 2",
"Species 3", "Species 4"))
尝试:
library(Rmisc)
library(Reshape2)
melt <- melt(example, id=c("TREATMENT", "TIME"), value.name="growth", variable.name = "Species")
x <- summarySE(melt, measurevar = "growth", groupvars = c("TIME", "TREATMENT", "Species") )
xmean<-signif(x[,5],digits=3)
xse<-signif(x[,7],digits=3)
x<-paste(xmean,xse,sep=" \u00b1 ")
x
生产:
[1] "1.63 ± 0.024" "2.56 ± 0.226" "2.51 ± 0.273" "2.77 ± 0.446" "1.74 ± 0.0584" "2.02 ± 0.0304" "2.26 ± 0.144"
我觉得我要走很长一段路,是否有创建发布就绪 tables 的包之类的东西?类似于 ggplot2 的 table 版本。我似乎找不到任何东西。
嗯,我似乎无法弄清楚你在总结什么。我没有 Rmisc 包,但假设您得到的答案是正确的,您可以将其包装在数据框中并为每个度量指定一个行名称:
d=data.frame(summary=x, row.names=colnames(example)[3:ncol(example)])
比如说,如果您按物种进行总结,将如下所示:
summary
Species.1 1.852 ± 0.28
Species.2 2.24 ± 0.338
Species.3 2.26 ± 0.371
Species.4 2.708 ± 0.465
编辑:由于 summarySE 输出已经是一个数据框,您只需要创建一个新列以按照您想要的方式格式化数据,然后最终将其重新塑造成您想要的样子。这是一个示例,与您对 reshape2 的使用保持一致:
x$summary = paste(round(x$growth, 3), "\u00b1", round(x$se, 3))
dcast(x, TIME+TREATMENT~Species, value.var='summary')
输出:
TIME TREATMENT Species 1 Species 2 Species 3 Species 4
1 0 A 1.63 ± 0.024 2.56 ± 0.226 2.511 ± 0.273 2.775 ± 0.446
2 0 B 1.742 ± 0.058 2.022 ± 0.03 2.259 ± 0.144 2.742 ± 0.182
3 0 C 2.185 ± 0.119 2.138 ± 0.143 2.01 ± 0.158 2.607 ± 0.219
4 0 D 1.526 ± 0.148 2.039 ± 0.088 2.277 ± 0.265 2.473 ± 0.244
5 1 A 3.127 ± 0.111 2.789 ± 0.109 2.704 ± 0.503 4.706 ± 1.308
6 1 B 3.6 ± 0.153 3.213 ± 0.475 3.747 ± 0.571 5.654 ± 0.879
7 1 C 7.464 ± 0.52 4.161 ± 1.004 4.622 ± 0.962 8.048 ± 3.832
8 1 D 6.037 ± 1.155 3.226 ± 0.571 3.974 ± 0.08 4.295 ± 0.521
9 2 A 13.34 ± 7.54 3.437 ± 1.085 4.618 ± 1.081 17.956 ± 5.825
10 2 B 8.668 ± 2.635 3.354 ± 0.646 3.439 ± 0.865 9.657 ± 3.993
11 2 C 36.323 ± 11.159 16.801 ± 2.088 19.31 ± 6.568 24.564 ± 14.638
12 2 D 16.811 ± 3.415 3.126 ± 0.115 5.598 ± 0.383 11.828 ± 6.163
我正在尝试创建平均值 ± 标准误差的摘要 table。到目前为止,我已经成功地从 SummarySE 函数中提取了 mean 和 se 列,但是我现在卡住了,无法弄清楚如何获取列名和行名。
数据:
structure(list(TREATMENT = c("A", "A", "A", "B", "B", "B", "C",
"C", "C", "D", "D", "D", "A", "A", "A", "B", "B", "B", "C", "C",
"C", "D", "D", "A", "A", "A", "B", "B", "B", "C", "C", "C", "D",
"D"), TIME = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), `Species 1` = c(1.64963636363636,
1.6574, 1.58190909090909, 1.6365, 1.75075, 1.83825, 2.247, 1.95557142857143,
2.35236363636364, 1.82253333333333, 1.37785714285714, 1.37892857142857,
2.952125, 3.33311111111111, 3.0967, 3.3912, 3.89709090909091,
3.51207692307692, 6.6176, 8.41072727272727, 7.3625, 7.19133333333333,
4.88216666666667, 4.770625, 28.371125, 6.8786, 4.10457142857143,
13.232, 8.66828571428571, 14.6534615384615, 51.7823333333333,
42.5318333333333, 20.2263333333333, 13.396), `Species 2` = c(2.36021428571429,
2.30930769230769, 3.01018181818182, 2.0195, 1.97107142857143,
2.07614285714286, 1.85307142857143, 2.2695, 2.29286666666667,
1.9504375, 1.95207142857143, 2.2144375, 2.57385714285714, 2.865,
2.92928571428571, 2.8453, 2.63855555555556, 4.15657142857143,
2.807375, 3.554, 6.12177777777778, 2.65541666666667, 3.7972,
1.285, 4.755, 4.271, 2.5925, 2.83158333333333, 4.638, 16.8010833333333,
13.1841666666667, 20.418, 3.24075, 3.0115), `Species 3` = c(2.1960625,
2.28214285714286, 3.05583333333333, 2.16986666666667, 2.06655,
2.54166666666667, 1.81271428571429, 1.89566666666667, 2.3227,
2.80616666666667, 2.05, 1.97592857142857, 3.44611111111111, 1.745,
2.9208, 4.6525, 3.89709090909091, 2.69244444444444, 2.7464, 5.93042857142857,
5.18888888888889, 3.8943125, 4.054, 6.11511111111111, 2.518125,
5.2216, 5.16908333333333, 2.59, 2.55716666666667, 9.12085714285714,
31.5835714285714, 17.227, 5.98033333333333, 5.21509090909091),
`Species 4` = c(2.00981818181818, 2.7604, 3.5535, 2.39085714285714,
3.00138888888889, 2.835, 2.25311111111111, 3.00791666666667,
2.55933333333333, 2.13933333333333, 2.331, 2.94761111111111,
3.66525, 7.304125, 3.14788888888889, 7.37175, 5.1192, 4.46957142857143,
2.73258333333333, 15.4874166666667, 5.9237, 4.81615384615384,
3.7743, 8.0213, 28.192, 17.6561111111111, 17.3084375, 7.81390909090909,
3.849, 9.618, 53.8383, 10.2361111111111, 17.9905454545455,
5.6655)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-34L), .Names = c("TREATMENT", "TIME", "Species 1", "Species 2",
"Species 3", "Species 4"))
尝试:
library(Rmisc)
library(Reshape2)
melt <- melt(example, id=c("TREATMENT", "TIME"), value.name="growth", variable.name = "Species")
x <- summarySE(melt, measurevar = "growth", groupvars = c("TIME", "TREATMENT", "Species") )
xmean<-signif(x[,5],digits=3)
xse<-signif(x[,7],digits=3)
x<-paste(xmean,xse,sep=" \u00b1 ")
x
生产:
[1] "1.63 ± 0.024" "2.56 ± 0.226" "2.51 ± 0.273" "2.77 ± 0.446" "1.74 ± 0.0584" "2.02 ± 0.0304" "2.26 ± 0.144"
我觉得我要走很长一段路,是否有创建发布就绪 tables 的包之类的东西?类似于 ggplot2 的 table 版本。我似乎找不到任何东西。
嗯,我似乎无法弄清楚你在总结什么。我没有 Rmisc 包,但假设您得到的答案是正确的,您可以将其包装在数据框中并为每个度量指定一个行名称:
d=data.frame(summary=x, row.names=colnames(example)[3:ncol(example)])
比如说,如果您按物种进行总结,将如下所示:
summary
Species.1 1.852 ± 0.28
Species.2 2.24 ± 0.338
Species.3 2.26 ± 0.371
Species.4 2.708 ± 0.465
编辑:由于 summarySE 输出已经是一个数据框,您只需要创建一个新列以按照您想要的方式格式化数据,然后最终将其重新塑造成您想要的样子。这是一个示例,与您对 reshape2 的使用保持一致:
x$summary = paste(round(x$growth, 3), "\u00b1", round(x$se, 3))
dcast(x, TIME+TREATMENT~Species, value.var='summary')
输出:
TIME TREATMENT Species 1 Species 2 Species 3 Species 4
1 0 A 1.63 ± 0.024 2.56 ± 0.226 2.511 ± 0.273 2.775 ± 0.446
2 0 B 1.742 ± 0.058 2.022 ± 0.03 2.259 ± 0.144 2.742 ± 0.182
3 0 C 2.185 ± 0.119 2.138 ± 0.143 2.01 ± 0.158 2.607 ± 0.219
4 0 D 1.526 ± 0.148 2.039 ± 0.088 2.277 ± 0.265 2.473 ± 0.244
5 1 A 3.127 ± 0.111 2.789 ± 0.109 2.704 ± 0.503 4.706 ± 1.308
6 1 B 3.6 ± 0.153 3.213 ± 0.475 3.747 ± 0.571 5.654 ± 0.879
7 1 C 7.464 ± 0.52 4.161 ± 1.004 4.622 ± 0.962 8.048 ± 3.832
8 1 D 6.037 ± 1.155 3.226 ± 0.571 3.974 ± 0.08 4.295 ± 0.521
9 2 A 13.34 ± 7.54 3.437 ± 1.085 4.618 ± 1.081 17.956 ± 5.825
10 2 B 8.668 ± 2.635 3.354 ± 0.646 3.439 ± 0.865 9.657 ± 3.993
11 2 C 36.323 ± 11.159 16.801 ± 2.088 19.31 ± 6.568 24.564 ± 14.638
12 2 D 16.811 ± 3.415 3.126 ± 0.115 5.598 ± 0.383 11.828 ± 6.163