una tabla studio importar filtrar filas exportar eliminar elegir datos data como columnas r data-processing read.table delimited

tabla - importar datos csv en r studio



Formas de leer solo seleccionar columnas de un archivo en R?(Un medio feliz entre `read.table` y` scan`?) (4)

Esta pregunta ya tiene una respuesta aquí:

Tengo algunos archivos de datos delimitados muy grandes y quiero procesar solo ciertas columnas en R sin tomar el tiempo y la memoria para crear un data.frame para todo el archivo.

Las únicas opciones que conozco son read.table que es muy derrochador cuando solo quiero un par de columnas o scan que parece demasiado bajo para lo que quiero.

¿Hay una mejor opción, ya sea con R pura o quizás llamando a algún otro script de shell para hacer la extracción de columna y luego usar scan o read.table en su salida? (¿Qué lleva a la pregunta de cómo llamar a un script de shell y capturar su salida en R?).


A veces hago algo como esto cuando tengo los datos en un archivo delimitado por tabuladores:

df <- read.table(pipe("cut -f1,5,28 myFile.txt"))

Eso permite cut la selección de datos, lo que puede hacer sin usar mucha memoria.

Consulte Solo leer el número limitado de columnas para la versión R pura, usando "NULL" en el argumento read.table para read.table .


Creo que el enfoque de Dirk es directo y rápido. Una alternativa que he usado es cargar los datos en sqlite que se carga mucho más rápido que read.table () y luego sacar solo lo que desea. el paquete sqldf () hace que todo esto sea bastante fácil. Aquí hay un enlace a una respuesta anterior de desbordamiento de pila que da ejemplos de código para sqldf ().


Probablemente esto sea más de lo que necesita, pero si está trabajando en conjuntos de datos muy grandes , entonces también puede echarle un vistazo al paquete HadoopStreaming que proporciona una rutina de reducción de mapas utilizando Hadoop .


Una posibilidad es usar pipe() en lugar del nombre del archivo y awk o filtros similares extraen solo las columnas que desee.

Ver help(connection) para más información sobre pipe y amigos.

Editar : read.table() también puede hacer esto por usted si es muy explícito acerca de colClasses: un valor de NULL para una columna dada omite la columna alltogether. Ver help(read.table) . Entonces, tenemos una solución en la base R sin paquetes o herramientas adicionales.