7 votos

Forma eficaz de combinar múltiples dataframes en R

Estoy construyendo una estructura de datos grande combinando el contenido de algunos archivos juntos. Estos archivos comparten el mismo diseño de columnas.

c = read.delim('bigfile1.txt')
c1 = read.delim('bigfile2.txt')
c2 = read.delim('bigfile3.txt')

ctmp1 = merge(c, c1, all=TRUE)
ctmp2 = merge(ctmp1, c2, all=TRUE)

¿Es eficiente el código anterior?

Debo reutilizar el mismo nombre de variable en lugar de ello, por ejemplo

tmp = merge(c, c1, all=TRUE)
tmp = merge(tmp, c2, all=TRUE)

18voto

Boris Tsirelson Puntos 191

Si por eficiente significa "rápido," Compruebe hacia fuera el paquete data.table. Tiene fusiones muy rápidos.

12voto

Raptrex Puntos 115

Usted podría cat les dentro de R como sigue:

read.table(pipe("cat bigfile1.txt bigfile2.txt bigfile3.txt"))

9voto

pkaeding Puntos 12935

Desde que mencionar que tienen el mismo diseño de la columna, usted probablemente querrá el tres (o más) de los datos.los marcos que se anexa a continuación el uno al otro, ¿verdad?

En ese caso, usted puede mirar en rbind:

cres = rbind(c, c1, c2)

Tenga cuidado, sin embargo: con una gran cantidad de datos.marcos, me he dado cuenta de que el rendimiento mediocre (esto tiene que ver con la forma de datos.los marcos son gestionados en la memoria, como la lista de columnas). También, puede haber problemas con los factores: tener el mismo diseño de la columna, pero la celebración de diferentes niveles para los factores que pueden romper esta (no lo he probado).

3voto

Alex Puntos 844

Si deseas rbind.fill del paquete plyr. Recientemente he visto de Hadley que es eficiente pero incapaz de encontrarlo.

2voto

rohith Puntos 118

Usted puede intentar unirse declaración en paquete de sqldf. Encontrar trabajo con SQL en caso gran base de datos mucho más fácil. Encontrará el enlace aquí para referencia

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X