J'ai les éléments suivants table1
qui est un bloc de données composé de 6 colonnes et 8083 lignes. Ci-dessous, j'affiche la tête de ce 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|
J'ai une autre trame de données, appelée accessions40
qui est une liste de 510 ID de gènes. Il s'agit d'un sous-ensemble de la première colonne de table1
c'est-à-dire que toutes ses valeurs (510) sont contenues dans la première colonne de table1
(8083). La tête de accessions40
s'affiche ci-dessous:
|V1 |
|:--------------|
|LdBPK_330360.1 |
|LdBPK_283000.1 |
|LdBPK_360210.1 |
|LdBPK_261550.1 |
|LdBPK_367320.1 |
|LdBPK_361420.1 |
Ce que je veux faire est le suivant: je veux produire un nouveau table2
qui contient sous la première colonne (identifiant du gène) uniquement les valeurs présentes dans accessions40
et les valeurs correspondantes des cinq autres colonnes de table1
. En d'autres termes, je veux sous-définir la première colonne de mon table1
basé sur les valeurs de accessions40
.
On peut utiliser %in%
pour obtenir un vecteur logique et subset
les lignes de la 'table1' en fonction de cela.
subset(table1, gene_ID %in% accessions40$V1)
Une meilleure option serait data.table
library(data.table)
setDT(table1)[gene_ID %chin% accessions40$V1]
Ou utilisez filter
de dplyr
library(dplyr)
table1 %>%
filter(gene_ID %in% accessions40$V1)
Il y a plusieurs façons de procéder. Trouver le gene_ID
dans table1
qui sont présents dans V1
colonne de accession40
table1[table1$gene_ID %in% accessions40$V1, ]
Ou vous pouvez également utiliser match
table1[match(accessions40$V1, table1$gene_ID), ]