0
votes

Rejoindre deux dataframes en r

Désolé, s'il s'agit d'une question super basique, mais j'ai eu une question en travaillant sur mon projet R. Fondamentalement, j'ai deux objets de cadre de données, un qui est une liste maîtresse de gènes et de leur niveau d'expression sur divers patients et une seule colonne de taille unique. Ensuite, une avec une seule colonne est une liste de gènes qui tombent sous une sous-catégorie spécifique de gènes qui figurent dans la liste maître. J'essaie de créer un cadre de données où j'ai mon sous-ensemble de gènes spécifique et leur expression sur les différents patients contenus dans la liste principale. J'ai essayé d'utiliser la fonction Fusion () mais seulement un fichier de données vide a été créé.

Fondamentalement, le code va quelque chose comme: new_dataframe <- fusion (maître_list, spécifique_gene_list, by = "Gene"). Je pensais que ce code devrait regarder ma liste principale à trouver tous les gènes de la liste spécifique, puis prenez ces gènes et ajoutez les colonnes d'expression du patient, mais ma trame de données est vide, elle crée une source de données avec toutes les colonnes du maître liste mais aucune valeur remplie. Toute aide est grandement appréciée.

Exemple visuel:

Cadre de données maître

x: 1

Y: 3

z: 4

w: 6

Cadre de données spécifique:

x

y

Cadre de données souhaitée:

x: 1

Y: 3


1 commentaires

Salut Cam21, s'il vous plaît, pourriez-vous fournir un exemple de cadre de données (idéalement à l'aide de dput () )? Il sera plus facile de vous aider comme votre "exemple visuel" n'est pas clair et nous ne savons pas si x , y sont des noms de ligne, des noms de colonne ou des valeurs. .. Merci


3 Réponses :


2
votes

Nous pouvons utiliser regex_inner_join à partir de fuzzyjoin xxx

data xxx


2 commentaires

Toujours le même résultat que la fusion régulière :(


@ CAM21 J'ai mis à jour avec les résultats que je m'entends avec les données utilisées. Il montre l'attendu



0
votes

Vous pouvez également diviser la colonne par le côlon et ajouter une nouvelle colonne pour fusionner les fichiers DataFrames.

mergecol <- c("x: 1",
"y: 3",
"z: 4",
"w: 6")

df <- cbind(mergecol, as.data.frame(do.call(rbind, strsplit(mergecol, ':'))))
df2 <- data.frame(V1 = c('x', 'y'))

mergedf <- merge(df, df2, by="V1")


result <- c('x: 1', 'y: 3')

assertthat::are_equal(result, mergedf$mergecol)
#[1] TRUE


0 commentaires

0
votes

Vous pouvez séparer les colonnes dans master_list code> à l'aide de Séparer code>, rejoindre spécifique_gene_list code> et combine à nouveau les colonnes avec Unite code >.

library(dplyr)
library(tidyr)

master_list %>%
  separate(gene, c('gene', 'value'), sep = ':\\s*') %>%
  inner_join(specific_gene_list, by = 'gene') %>%
  unite(gene, gene, value, sep = " : ")

#   gene
#1 x : 1
#2 y : 3


0 commentaires