将不同变量的值与其他组和自我进行比较
Posted
技术标签:
【中文标题】将不同变量的值与其他组和自我进行比较【英文标题】:Comparing values from different variables to other groups and self 【发布时间】:2021-12-14 18:08:05 【问题描述】:我从不同的化验中获得了一些数据(总共 8 个),并想计算出它们之间的 R^2。因此,将一个样品在一种测定中测试的结果与其他 7 种测定中的同一样品进行比较,以此来计算所有测定之间的相关性。
示例起始数据如下:
ID Short_Id Cohort Assay AssayResult
100001 RTP12 D 1 123
100001 RTP12 D 2 456
100001 RTP12 D 3 789
我想做的是修改数据框,以便有 2 个“AssayResult”列和 2 个“Assay”列,如下所示,其中每个组相互比较:
ID Short_Id Cohort Assay1 AssayResult1 Assay2 AssayResult2
100001 RTP12 D 1 123 1 123
100001 RTP12 D 2 456 1 123
100001 RTP12 D 3 789 1 123
...
100001 RTP12 D 1 123 3 789
100001 RTP12 D 2 456 3 789
100001 RTP12 D 3 789 3 789
与这个数据框一样,然后我可以运行以下代码,使用 AssayResult1 和 AssayResult2 作为 X/Y 轴,并使用 Assay1 + Assay2 将 facet_grid 分成一个大的 8x8 图形,以便在所有这些图形之间进行比较。
ggplot(df, aes(x=AssayResult1, y=AssayResult2))+
scale_y_continuous(trans="log10")+
scale_x_continuous(trans="log10")+
stat_poly_eq(formula = my.formula,rr.digits = 2,
label.x="right",label.y=c(0.10,10),
geom = "label_npc",alpha=0.33,
parse = TRUE)+
facet_grid(Assay1~Assay2)
我的一部分认为这很容易做到 - 但我不确定如何通过 dplyr/tidyr 最好地做到这一点。我还可能遗漏了一些可以在 ggplot 中运行来执行此操作的超级简单的东西?由于数据都在那里,我只需要一种方法来根据“Assay”字段将“AssayResults”相互比较
感谢任何帮助!
编辑:如果还有一种简单的方法可以生成相关比较热图,那也很好。因为我对检测之间的相关性感兴趣,但也可以直观地看到这些不同检测中所有样本之间的比较。
【问题讨论】:
您需要什么并不完全清楚。查看expand
。并制作一个 Minimal-Reproducible 示例数据集以更好地说明您的问题。
【参考方案1】:
我不确定这是否是您想要的,但也许可以帮助您更具体地定义问题。
在这里,我从mtcars
的前 7 行制作了一些假数据,并展示了如何将其连接到自身并绘制出至少与您正在寻找的内容大致相似的事情。你没有提供my.formula
,所以我不知道你期待stat_poly_eq
;在任何情况下,将一个队列中的一个数据点与该队列中的其他数据点进行比较似乎意味着您只有一个 x 值,不是吗?
library(tidyverse)
mtcars1 <- mtcars %>%
rownames_to_column("car") %>%
slice(1:7) %>%
arrange(cyl, wt) %>%
select(Short_Id = car, Cohort = cyl, Assay_result = wt)
df <- mtcars1 %>%
left_join(mtcars1, by = "Cohort")
ggplot(df, aes(x=Assay_result.x, y=Assay_result.y))+
geom_point() +
scale_y_continuous(trans="log10")+
scale_x_continuous(trans="log10")+
facet_grid(Short_Id.x~.)
【讨论】:
以上是关于将不同变量的值与其他组和自我进行比较的主要内容,如果未能解决你的问题,请参考以下文章
只要新值与当前值不同,Oracle SQL 将字段的值更改为列表中的其他值?