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

Carlos Ortega cof @ending from qu@lityexcellence@e@
Mar Oct 16 19:34:59 CEST 2018


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....

#-------------
> library(randomNames)
> set.seed(7777)
>
> var_1 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_2 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_3 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_4 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_5 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_6 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_7 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_8 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
> var_9 <- randomNames(10, ethnicity = "Hispanic", which.names = "first")
>
> # Intersection of var_1 and var_2
> var_1
 [1] "Isidro"   "Yanelli"  "Sabrina"  "Maria"    "Joshua"   "Huget"
"Emiley"   "Jaquelin" "Freddy"   "Samantha"
> var_2
 [1] "Maria"    "Rafael"   "Jeanette" "Abigail"  "Matthew"  "Tylar"
"Adam"     "Maritza"  "Jose"     "Heather"
> intersect(var_1, var_2)
[1] "Maria"
>
> # For all the databases
> all_dat <- list(var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8,
var_9)
>
> res_comb <- as.data.frame(t(combn(1:9, 2)))
>
> for(i in 1:nrow(res_comb)) {
+
+   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 using unavarra.es> escribió:

> 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
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es