gpt4 book ai didi

r - 排序和呈现我的数据的问题 - tapply 和图形问题

转载 作者:行者123 更新时间:2023-12-01 13:43:06 27 4
gpt4 key购买 nike

我目前正尝试展示我在放置实验中收集的一些数据。只是让我们继续前进的东西。我们从 12 个土壤样本中收集了 DNA,每个样本都经过三种不同的处理,正在寻找 14 个基因。还有一个 limed/unlimed 变量。 R 编码对我来说既新鲜又绝对不直观。

我的实际目标是用 x 轴上的 14 个基因 (Gene) 和 Y 轴上的 DNA 浓度 (RelConc) 来呈现这些数据。每个处理的点(可能还有连接线)将浓度与基因相匹配,以显示处理(处理)之间的差异。我希望拆分 Limed 和 Unlimed 数据并将两个图表放在同一张图像上。

这是我想要的快速想法

enter image description here

不幸的是,基本的 R 教程只让我了解了 Gene against RelConc 和 Treatment against RelConc。

我得到的例子 - 基因对 DNA

enter image description here

我的第一个想法是创建一个仅包含一种处理(例如对照)数据的新表,然后尝试单独绘制它。

我用过

tapply(RelConc,Treatment, summary)  

它运行良好并显示按处理分隔的汇总浓度数据。

但我似乎无法让它只显示控件,我一直在尝试按照

tapply(RelConc,Treatment="Control", summary) 

返回

Error in unique.default(x, nmax = nmax) : 
unique() applies only to vectors

任何想法都会受到赞赏,事实上,如果有一个非常简单的方法来做我想做的事情,请告诉我:)

谢谢,

杰森

最佳答案

这是一个开始。您可以根据需要调整选项。首先,我不会尝试像 tapply() 这样的东西。您需要为每个特定组合获取手段;为此使用 aggregate()。然后我会为您的情节制作一个一次性功能,以节省一些打字并便于编辑。请注意,您需要大量自定义功能才能获得您想要的东西。

d  <- read.csv(file=file.choose(), header=TRUE)
am <- aggregate(RelConc~Treatment*Gene*Liming, data=d, FUN=mean)

my.plot <- function(lim){
with(am[which(am$Liming==lim & am$Treatment=="Control"),],
plot(x=as.numeric(Gene), y=RelConc, ylim=c(0, 0.1), type="b", pch=1, lty=1, col=1,
axes=FALSE, main=lim, ylab="Relative Concentration", xlab=""))
box()
axis(side=1, at=1:14, labels=FALSE)
text(x=1:14-.5, y=par("usr")[3]-.006, labels=levels(am$Gene),
srt=45, pos=1, xpd=TRUE, cex=.9)
mtext(side=1, text="Gene", line=3.5)
axis(side=2, at=seq(0, .1, by=.02), labels=seq(0, .1, by=.02))
with(am[which(am$Liming==lim & am$Treatment=="Insecticide"),],
lines(x=as.numeric(Gene), y=RelConc, lty=2, col=2))
with(am[which(am$Liming==lim & am$Treatment=="Insecticide"),],
points(x=as.numeric(Gene), y=RelConc, pch=2, col=2))
with(am[which(am$Liming==lim & am$Treatment=="Molluscicide"),],
lines(x=as.numeric(Gene), y=RelConc, lty=3, col=4))
with(am[which(am$Liming==lim & am$Treatment=="Molluscicide"),],
points(x=as.numeric(Gene), y=RelConc, pch=3, col=4))
legend("topleft", legend=c("Control", "Insecticide", "Molluscicide"),
pch=1:3, lty=1:3, col=c(1,2,4))
}

windows(height=6, width=12) # or quartz(), if you're using Mac
layout(matrix(1:2, nrow=1)) # gives you 2 plots
my.plot("Limed")
my.plot("Unlimed")

enter image description here

关于r - 排序和呈现我的数据的问题 - tapply 和图形问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com