2017-09-11 2 views
0

J'ai une base de données de 2 300 colonnes et 300 lignes. Les colonnes sont nommées par paires =Fusionner des colonnes portant le même nom (avec du texte en lignes) dans une même trame

df<- read.csv(file = "RmergeTest.csv", header = TRUE, sep = ";", check.names = FALSE) 
df 
    SNP_1 SNP_1 SNP_2 SNP_2 SNP_3 SNP_3 etc.... 
1  A  T  T  G  G  C 
2  A  T  T  G  G  C 
3  A  T  T  G  N  N 
4  A  T  T  G  G  C 

Je voudrais combiner/fusionner/etc chaque paire de colonne =

SNP_1 SNP_2 SNP_3 
1  AT TG GC 
2  AT TG GC 
3  AT TG NN 
4  AT TG GC 
+0

Pourquoi vos colonnes dynamiques tandis que vos lignes sont statiques? En général, lorsque vous travaillez avec des tables, le nombre de colonnes doit être statique et les lignes doivent être dynamiques. –

Répondre

1

Vous pouvez diviser le data.frame en groupes basés sur les noms de colonnes similaires en utilisant split.default. Ensuite, vous pouvez coller les colonnes dans chaque sous-groupe ensemble

poursuit
sapply(split.default(df, names(df)), function(a) Reduce(paste0, a)) 
#  SNP_1 SNP_2 SNP_3 
#[1,] "AT" "TG" "GC" 
#[2,] "AT" "TG" "GC" 
#[3,] "AT" "TG" "NN" 
#[4,] "AT" "TG" "GC" 

DONNÉES

df = structure(list(SNP_1 = c("A", "A", "A", "A"), SNP_1 = c("T", 
"T", "T", "T"), SNP_2 = c("T", "T", "T", "T"), SNP_2 = c("G", 
"G", "G", "G"), SNP_3 = c("G", "G", "N", "G"), SNP_3 = c("C", 
"C", "N", "C")), .Names = c("SNP_1", "SNP_1", "SNP_2", "SNP_2", 
"SNP_3", "SNP_3"), class = "data.frame", row.names = c("1", "2", 
"3", "4"))