3

我是一个真正的初学者,并试图为我的硕士论文分析一些金属管材料损失的数据。我想比较不同管子一段时间内材料损失的标准偏差。我创建了一些子矩阵并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...是测量位置和行的标题。

我想绘制不同的数据图,其中之一是:箱线图,x 轴是管数,y 轴是导出标准偏差的分布。

我到处搜索并尝试了很多不同的东西,但我无法显示图表。

希望有人可以帮助我,将不胜感激!

4

1 回答 1

0

你不需要创建一个特殊的函数来做你想做的事,你可以传递na.rm=TRUEtapply

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)

剧情

于 2013-12-28T05:18:46.207 回答