簡體   English   中英

根據一列中的唯一值比較多個數據幀,並在R中的多個數據幀中查找第二列中的重疊值

[英]Comparing multiple data frames based on unique values in one column and finding overlapping values in second column in multiple data frames in R

我想根據我在嘗試識別多個數據幀中的相交值時遇到的問題尋求建議,但是在我看來這有點復雜,我無法弄清楚如何使用常規的相交函數來做到這一點。

我有幾個數據框(最多12個),其中多列顯示基因隨時間的變化(例如5個時間點),以及其他基因如何與此變化相關(即,其他基因也以某種方式下降或上升)關聯數據中的其他基因)。 分析一次獲取每個基因,將該基因作為參考,並針對每個基因進行測試,以查看這些基因隨時間變化的模式是否與第一個參考基因相關。 對於每個單個基因重復此過程。 因此,以一個數據幀為例,結果將如下所示。

第1列包含用作參考基因的基因,如果其他基因與該基因隨時間的變化相關,則此值可以多次出現。 例如,如果基因b,c和d與基因a相關,則前兩列顯示如下:

a b
a c
a d

基因b依此類推,依此類推,第四次20,000次(基因數)! 希望這有意義嗎?

b a
b c
b d

上面的分析是在多個不同的樣本中進行的,因此我將獲得多達12個數據幀,這些數據幀是不同的樣本,每個樣本的結果均如上所述。

客觀的(並且我很抱歉,我沒有代碼,因為我不太確定從哪里開始!),因為我認為最好為此創建一個函數來解決此問題:對於第1列中的基因'x',在每個數據幀中,我想查看第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,或者對於延遲列等...

非常感謝您抽出寶貴的時間閱讀本文!

如果我理解正確,則可以將所有12個數據幀添加為

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

查找所有12個數據框中存在的基因組合

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

由於有12個數據框

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

將在所有12個數據幀中為您提供一對基因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM