Foro de debate

CRUCE DE FICHEROS TXT EN LENGUAJE R

 
Imagen de Enrique Muñoz Guerra
CRUCE DE FICHEROS TXT EN LENGUAJE R
de Enrique Muñoz Guerra - martes, 9 de mayo de 2017, 07:32
 

Estimados buenos dias


Solicito su apoyo para poder cargar en R dos ficheros de TXT  con un total de 1157348 registros. Si bien es cierto pude realizar la siguiente codificacion para visualizar la lista de registros

> rm(list = ls())

> library(foreign)

> setwd("C:/Users/jesus.e.munoz.guerra/Documents/estadistica/data01")

> datos<-read.table("e001.dat",sep=";",header=FALSE)

Estos solo cargan en pantalla 9999 saliendo el siguiente mensaje: "[ reached getOption("max.print") -- omitidas 1147346 filas ]]". 

Sin embargo muy aparte de que salga este mensaje lo que deseo es el cruce de dos ficheros que tienen la misma cantidad de registros y mediante un campo clave ya sea en este caso el tercer campo se cruce con otro fichero que contenga el valor del 3 campo del fichero 01 y pueda comprobar si una de sus columnas de ambos archivos su monto es el mismo en caso contrario debera arrojarme cuales son los registros que si concuerdan como los que no concuerdan y de ser posible un estadistico como tabla dinamica seria genial. Esta cantidad de informacion no puede ser cruzada en excel ya que para dicha herramienta es demasiado. espero su pronta respuesta para poder cruzar mis ficheros y obtener resultado optimos. favor de brindar el codigo y pasos a seguir

saludos





Imagen de Franz Jimeno
Re: CRUCE DE FICHEROS TXT EN LENGUAJE R
de Franz Jimeno - miércoles, 10 de mayo de 2017, 07:11
 

Hola,


yo haría algo así (utilizo el paquete dplyr):


library(dplyr)

#genero 2 tablas ejemplo

tabla1 <- data.frame(codigo=LETTERS, saldo=c(rep(1:5, each=5),1), stringsAsFactors = FALSE)

tabla2 <- data.frame(codigo=sample(LETTERS[1:15]), saldo=rep(1:5, each=3), stringsAsFactors = FALSE) %>% arrange(codigo)


#Fusiono ambas tablas por la variable codigo

tabla_union <- tabla1 %>% inner_join(tabla2, by="codigo") %>% mutate(diferencia=saldo.x-saldo.y)


#Filtro los resultados con diferencia 0, el valor es igual en ambas columnas

tabla_resultado_ok <- tabla_union %>% filter(diferencia==0)


#Filtro los resultados por valores diferentes de 0, el valor de ambas columnas es diferente a 0

tabla_reslutado_no_ok <- tabla_union %>% filter(diferencia!=0)



Espero que te pueda ser útil.


Un saludo,


Franz