0

问候,

基本上,我有两个数据向量(我们称之为实验和基线)。我想使用 R 的格子库和直方图函数来并排绘制两个直方图,就像在本页末尾看到的那样。

我将数据保存在这样的 CSV 文件中:

Label1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label4,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label6,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18

每行应该是一对新的直方图。第 1-9 列代表实验的数据(左侧直方图)。第 10-18 列代表基线数据(右侧直方图)。

谁可以帮我这个事?谢谢。

4

2 回答 2

1

您的数据格式不适合使用lattice. 您可以使用reshape.

read.csv(textConnection("Label1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label4,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label6,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18"), header = F)->data

colnames(data)[1] <- "ID"
colnames(data)[2:10] <- paste("exp",1:9, sep = "_")
colnames(data)[11:19] <- paste("base", 1:9, sep = "_")

library(reshape)
data.m <- melt(data, id = "ID")
data.m <- cbind(data.m, colsplit(data.m$variable, "_", names = c("Source","Measure")))

data.m现在是您真正希望您的数据用于几乎所有内容的格式。我不知道实验中的 9 个测量值和基线中的每一个是否有意义或是否可以进行有意义的比较,因此我将它们区分。

现在,您可以lattice正常使用了。

histogram(~value | Source + ID, data = data.m)

如果测量值进行了有意义的比较(也就是说,data[,2]并且data[,11]在某种程度上“相同”),您可以重新调整数据以直接将实验与基线进行比较

data.comp <- cast(data.m, ID + Measure ~ Source)  
## I know ggplot2 better
library(ggplot2)
qplot(base, exp, data = data.comp)+
  geom_abline()+
  expand_limits(x = 0, y = 0)
于 2010-07-26T23:50:39.320 回答
0

像这样的东西应该工作:

library(lattice)
data <- matrix(1:18, ncol=18, nrow=3, byrow=T)

for (i in 1:nrow(data))
    {
    tmp <- cbind(data[i,], rep(1:2, each=9))
    print(histogram(~tmp[,1]|tmp[,2]), split=c(1,i,1,nrow(data)), more=T)
    }

注意:这仅适用于几行数据...对于较大的数据集,您可能需要考虑稍微不同的布局(更改split参数histogram

于 2010-07-26T22:33:57.517 回答