【问题标题】:Comparing multiple data frames based on unique values in one column and finding overlapping values in second column in multiple data frames in R根据一列中的唯一值比较多个数据帧,并在 R 中的多个数据帧的第二列中查找重叠值
【发布时间】:2019-01-26 20:23:55
【问题描述】:

我想根据我在尝试识别多个数据帧中的相交值时遇到的问题寻求建议,但在我看来这有点复杂,我无法弄清楚如何使用正常的 intersect 函数来做到这一点.

我有几个数据框(最多 12 个),其中多列显示基因随时间的变化(例如 5 个时间点)以及其他基因如何与这种变化相关联(即其他基因也下降或上升以一种与数据中的其他基因相关联的方式)。该分析一次取一个基因,使用该基因作为参考,并针对它测试每个基因,以查看这些基因随时间变化的模式是否与第一个参考基因相关。这对每个单个基因都重复。所以以一个数据框为例,结果会如下所示。

第 1 列包含用作参考基因的基因,如果其他基因与该基因随时间的变化相关,则该值可能会出现多次。例如,如果基因 b、c 和 d 与基因 a 相关,则前两列显示如下:

a b
a c
a d

相同的基因 b 等等等等第四 20,000 次(基因数量)!希望这有意义吗?

b a
b c
b d

上面的分析是在多个不同的样本中进行的,所以我将获得多达 12 个数据帧,这些数据帧是不同的样本,每个数据帧的结果都如上详述。

目标(并提前道歉,我没有代码,因为我不完全确定从哪里开始!)因为我认为这可能最好通过为此创建一个函数来实现:For gene 'x' in column number 1,在每一个数据框中,我想看看第2列是否有重叠值。

以上面的例子,多个数据框可能是这样的:

df1
a b
a c
a d
df2
a d
a c
a e
df3
a d
a e
a f

因此,比较数据框,该函数将识别出基因 a,在所有数据框...基因 d.. 之间有一列值,因为基因 a 的所有数据框都是通用的。

同样,该函数将对每一个基因进行这种重叠分析...基因a、b、c..等

输出将是第 2 列中每个单个基因的重叠值,这些重叠值发生在跨数据帧的 a 列中的相同基因

我在贴头(分析)

Feature1           Feature2 delay      pBefore       pAfter  corBefore
1 ENSMUSG00000001525 ENSMUSG00000026211     0 0.1093914984 0.1093914984  0.7161907
2 ENSMUSG00000001525 ENSMUSG00000055653    -1 0.0916478944 0.1047749696  0.7414240
3 ENSMUSG00000001525 ENSMUSG00000003038     0 0.0006810160 0.0006810160  0.9786161

加上特征 1 中的更多基因,每个特征 2 中的基因与特征 1 中的基因相关

此数据框将是一个样本,而我将对其他样本有单独的结果

我非常感谢有关如何创建代码以实现此目标的任何提示。此外,很高兴能够指定我也希望看到只包含的基因重叠,例如 pBefore >= 0.8,或者延迟列等相同......

非常感谢您花时间阅读本文!

【问题讨论】:

    标签: r dataframe compare intersection overlap


    【解决方案1】:

    如果我理解正确,您可以将所有 12 个数据帧添加为

       df_final = pd.concat([df1,df2.....df12])
    

    找出所有 12 个数据帧中存在的基因组合

       df_n = df_final.groupby(['A','B']).size().reset_index(name = 'count') 
    

    因为有 12 个 Dataframe

       df_n[df_n['count']==12] 
    

    将为您提供所有 12 个数据框中的基因对。

    【讨论】:

    • 谢谢,我在 R 中执行此操作,因此将在 R 中执行此操作并回复您。只是为了澄清。连接后, df_n =df_final.groupby(['A','B']).size().reset_index(name = 'count') ... 按 A+B 分组,采用特征 1.. 并识别组之间第 2 列的共同特征?另外,我的示例是一个虚拟的...总共有 20,000 个功能.. group by 可以替换为 df$feature1 吗?有没有办法传递诸如 make.unique(df$feature1) 之类的参数,因为这是具有重复的列,但我当然对这里的单个值感兴趣...
    • 我无法理解你想要什么样的输出。这将为您提供所有 12 个数据帧中 Feature1 和 Feature2 中都存在的一对基因。
    猜你喜欢
    • 2018-01-10
    • 2021-08-02
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多