2016-08-09 8 views
3

次のようなものがあります。table1は、6列と8083行からなるデータフレームです。下に私はこのtable1の先頭を表示しています:サブセット別のデータフレーム/リストに基づくデータフレームの列

|gene ID  | prom_65| prom_66| amast_69| amast_70| p_value| 
|:--------------|---------:|---------:|---------:|---------:|---------:| 
|LdBPK_321470.1 | 24.7361| 25.2550| 31.2974| 45.4209| 0.2997430| 
|LdBPK_251900.1 | 107.3580| 112.9870| 77.4182| 86.3211| 0.0367792| 
|LdBPK_331430.1 | 72.0639| 86.1486| 68.5747| 77.8383| 0.2469355| 
|LdBPK_100640.1 | 43.8766| 53.4004| 34.0255| 38.4038| 0.1299948| 
|LdBPK_330360.1 | 2382.8700| 1871.9300| 2013.4200| 2482.0600| 0.8466225| 
|LdBPK_090870.1 | 49.6488| 53.7134| 59.1175| 66.0931| 0.0843242| 

私は510個の遺伝子IDのリストであるaccessions40と呼ばれる別のデータフレームを、持っています。 table1の最初の列のサブセットです。つまり、その値のすべて(510)がtable1(8083)の最初の列に含まれています。 accessions40の頭が下に表示されます。私は最初の列(遺伝子ID)の下に含まれている新しいtable2を生成したいaccessions40中に存在する唯一の値と対応する:私は何をしたい以下の通りである

|V1    | 
|:--------------| 
|LdBPK_330360.1 | 
|LdBPK_283000.1 | 
|LdBPK_360210.1 | 
|LdBPK_261550.1 | 
|LdBPK_367320.1 | 
|LdBPK_361420.1 | 

他の5つの列の値はtable1です。言い換えれば、accessions40の値に基づいて私のtable1の最初の列をサブセット化したいと思います。

答えて

3

を使用することができますそれに基づいて 'table1'。

subset(table1, gene_ID %in% accessions40$V1) 

より良いオプションはdata.table

library(data.table) 
setDT(table1)[gene_ID %chin% accessions40$V1] 

それともdplyr

library(dplyr) 
table1 %>% 
     filter(gene_ID %in% accessions40$V1) 
から filterを使用するだろう
3

これを行う方法はたくさんあります。 accession40

table1[table1$gene_ID %in% accessions40$V1, ] 

かのV1列に存在しているtable1gene_ID見つけるあなたはまた、私たちは、論理ベクトルとsubset行を取得するには%in%を使用することができますmatch

table1[match(accessions40$V1, table1$gene_ID), ] 
関連する問題