我是一个真正的初学者,并试图分析一些金属管材料损耗的数据,以供我的硕士论文使用。我想比较不同管道间隔内材料损失的标准偏差。我创建了一些子矩阵并做了tapply
来计算标准偏差。
我有以下脚本:
myfunctionSD <- function(mydata) { return(sd(mydata,na.rm=TRUE))}
Alltubes <- tapply(datIn$Material.loss.interval,
list(as.factor(datIn$Measurement.location),
as.factor(datIn$Tube.number)),
myfunctionSD)
其输出是一个表格,其中列标题为Tube.number
,行标题为Measurement.location
。
dput(head(Alltubes))
structure(c(0.871073958553372, NA, 0.697795091282526, NA, 0.838624866472886,
NA, 0.726992791242471, 0.807567484588899, NA, 0.598675787394729,
NA, 0.510990323891863, 0.81510216193526, NA, 1.09844645540173,
NA, 0.839816448199645, NA, 0.63972340253115, NA, 1.11485875917537,
NA, 0.883318358663128, NA, 0.86706340125676, NA, 1.21565055332783,
NA, 1.24692213662875, NA, 0.704210691776757, NA, 0.962002980998362,
NA, 1.00703215272093, NA), .Dim = c(6L, 6L), .Dimnames = list(
c("1", "10", "11", "12", "13", "14"), c("1", "2", "3", "4",
"5", "6")))
为了清楚起见:1,2,3,4,5,6是列的管号和标题,而1,10,11 ......是行的测量位置和标题。 / p>
我想制作不同的数据图,其中一个是: Boxplot在x轴上的管数和y轴的推导标准差的扩散。
我到处搜索并尝试了很多不同的东西,但我无法得到一个图表。
希望有人能帮助我,将不胜感激!
答案 0 :(得分:0)
您不需要创建特殊功能来执行您想要的操作,您可以将na.rm=TRUE
传递给tapply
:
Alltubes <- tapply(datIn$Material.loss.interval,
list(as.factor(datIn$Measurement.location),
as.factor(datIn$Tube.number)),
sd, na.rm=TRUE)
然后你可以使用:
par(mfrow=c(2,2), mar=c(4,4,1,1), oma=c(1,1,1,1))
boxplot(Alltubes, names=colnames(Alltubes), xlab="Tube numbers",
ylab="standard deviation")
boxplot(t(Alltubes), names=rownames(Alltubes),
xlab="Measurement locations", ylab="standard deviation")
matplot(colnames(Alltubes), t(Alltubes), xlab="Tube numbers",
ylab="standard deviation", type="b", lty=1, pch=19)
matplot(rownames(Alltubes), Alltubes, xlab="Measurement locations",
ylab="standard deviation", type="b", lty=1, pch=19)