【发布时间】:2016-03-08 15:52:12
【问题描述】:
我有六组不同的数据,每组都是大约 10,000 行或更大且有两列的数据框。一列包含峰值名称,例如“peak_1”,另一列包含频率。其中一些数据帧包含相同的峰值,而有些则不包含。我的目标是找出这六个数据帧的哪些重叠子集中的峰值(6 个数据集有 63 种不同的可能组合)。我找到了可以找到维恩图子集(这是我正在寻找的)的包,但不适用于 6 个数据集,我尝试使用 %in% 和 which,但是由于我的数据集的大小,我遇到了障碍我想不通。我试图通过将文件合并到所有可能的组合中手动确定它,然后根据文件的大小手动计算每个子集的大小,但我似乎在那里犯了错误,我需要知道每个子集中包含什么,而不仅仅是大小。
例子:
dataA dataB dataC
V1 V2 V1 V2 V1 V2
peak1 3 peak2 1 peak1 1
peak2 1 peak3 2 peak4 3
peak5 2 peak4 1 peak6 1
peak8 1 peak8 2 peak8 4
peak9 2
这是我希望达到的结果,其中 dataX 是一个不同的数据框(或类似的东西......我至少需要有可以保存为文件的新表)
dataA dataB dataC dataAB dataAC dataBC dataABC
V1 V2 V1 V2 V1 V2 V1 V2 V1 V2 V1 V2 V1 V2
peak5 2 peak3 2 peak6 1 peak2 2 peak1 4 peak4 4 peak8 7
peak9 2
我知道这是冗长的,但任何建议都将受到欢迎,因为它看起来应该比我做的更直接!
【问题讨论】:
-
我最初的直觉反应是首先使用
dplyr::bind_rows(..., .id="source")创建一个大数据框。然后,您可以生成各种交叉表,以深入了解不同峰值的来源和出现。使用这样的“主数据框”,您可以为either data source A or data source B创建一个附加指标,并在进一步处理中使用它。 -
一个问题当然是您想要的输出实际上有点不清楚。例如,在您的
dataA列中,所有其他未列出的值发生了什么变化?是什么导致它们被丢弃? -
看起来是个不明智的方向。最好将它们 rbind 并使用长格式。
标签: r dataframe subset venn-diagram