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

Javier Nieto m@c_j@vi @ending from hotm@il@com
Mar Oct 16 21:10:59 CEST 2018


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

________________________________
De: R-help-es <r-help-es-bounces using r-project.org> en nombre de Carlos Ortega <cof using qualityexcellence.es>
Enviado: martes, 16 de octubre de 2018 12:34:59 p. m.
Para: Miriam Alzate
CC: Lista R
Asunto: Re: [R-es] Comprobar los nombres de columnas entre varios dataframes

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<http://www.qualityexcellence.es>

        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es using r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

	[[alternative HTML version deleted]]



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