Skip to content

[R-es] Comprobar los nombres de columnas entre varios dataframes

3 messages · miri@m@@lz@te m@ili@g off u@@v@rr@@es, Carlos Ortega, Javier Nieto

#
Buenas tardes,
Quiero aplicar la función rbind y necesito tener los mismos nombres de
columnas. Como tengo unas 195 variables en cada dataframe, necesito
hacerlo de una forma rápida. Tengo 9 bases de datos y tengo que fusionar
todas. ¿Como puedo comprobar que los nombres de las variables son los
mismos? Y de lo contrario, ¿como detecto las diferencias?

He probado con setdiff(names(Fecha2),names(Fecha1)) pero el resultado es
character (0).

Muchas gracias
#
Una forma (no optimizada) es esta.
Creo unos nombres de columnas artificiales (10 nombres de personas) y
compruebo que elementos hay comunes cogiendo parejas de esas variables.
Cada variable son los nombres de las columnas de cada una de tus bases de
datos.

Puedo hacer un bucle comparándolas dos a dos, compruebo la intersección....

#-------------
[1] "Isidro"   "Yanelli"  "Sabrina"  "Maria"    "Joshua"   "Huget"
"Emiley"   "Jaquelin" "Freddy"   "Samantha"
[1] "Maria"    "Rafael"   "Jeanette" "Abigail"  "Matthew"  "Tylar"
"Adam"     "Maritza"  "Jose"     "Heather"
[1] "Maria"
var_9)
+
+   inter_val <- intersect(all_dat[[res_comb$V1[i]]],
all_dat[[res_comb$V2[i]]])
+   print(c("Coincidences: ", i, inter_val))
+
+ }
[1] "Coincidences: " "1"              "Maria"
[1] "Coincidences: " "2"
[1] "Coincidences: " "3"
[1] "Coincidences: " "4"
[1] "Coincidences: " "5"
[1] "Coincidences: " "6"
[1] "Coincidences: " "7"
[1] "Coincidences: " "8"
[1] "Coincidences: " "9"
[1] "Coincidences: " "10"
[1] "Coincidences: " "11"
[1] "Coincidences: " "12"
[1] "Coincidences: " "13"
[1] "Coincidences: " "14"
[1] "Coincidences: " "15"
[1] "Coincidences: " "16"
[1] "Coincidences: " "17"
[1] "Coincidences: " "18"
[1] "Coincidences: " "19"
[1] "Coincidences: " "20"
[1] "Coincidences: " "21"
[1] "Coincidences: " "22"             "Eric"
[1] "Coincidences: " "23"
[1] "Coincidences: " "24"
[1] "Coincidences: " "25"
[1] "Coincidences: " "26"             "Giovanni"
[1] "Coincidences: " "27"             "Jacob"
[1] "Coincidences: " "28"
[1] "Coincidences: " "29"
[1] "Coincidences: " "30"             "Daisy"
[1] "Coincidences: " "31"
[1] "Coincidences: " "32"
[1] "Coincidences: " "33"
[1] "Coincidences: " "34"
[1] "Coincidences: " "35"             "Karla"
[1] "Coincidences: " "36"             "Michelle"
#-------------

Gracias,
Carlos




El mar., 16 oct. 2018 a las 19:03, <miriam.alzate en unavarra.es> escribió:

  
    
#
Hola creo que lo que buscas es:


library(data.table)

Browse[1]> DT1 = data.table(A=1:3,B=letters[1:3])
Browse[1]> DT2 = data.table(B=letters[4:5],C=factor(1:2))
Browse[1]> l = list(DT1,DT2)
Browse[1]> rbindlist(l, use.names=TRUE, fill=TRUE)
    A B  C
1:  1 a NA
2:  2 b NA
3:  3 c NA
4: NA d  1
5: NA e  2
Browse[1]> DT1
   A B
1: 1 a
2: 2 b
3: 3 c
Browse[1]> DT2
   B C
1: d 1
2: e 2


Saludos