es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener una muestra aleatoria de un archivo .txt al leerlo en R?

Tengo 2 grandes marcos de datos en formato .txt con los que estoy trabajando en R (cada uno de más de 5 GB con más de 5 millones de observaciones). Me preguntaba si había una manera fácil de obtener una muestra aleatoria de ~20,000 filas de cada uno al leer los datos.

Actualmente, no puedo leer los datos y luego seleccionar una muestra, porque los datos son demasiado grandes y me encuentro con un error.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera fácil de realizar una muestra aleatoria de 20,000 filas de cada marco de datos grande .txt en R sin leer todo el conjunto de datos. Esto se puede lograr utilizando la función sample_n() del paquetedplyr. Así es como:

    1. Carga el paquete dplyr:
    library (dplyr)
    
    1. Usa la función read.table() para leer los marcos de datos grandes .txt, pero solo selecciona un subconjunto de las filas utilizando el argumento nrows. Por ejemplo:
    df1 <- read.table ("archivo1.txt", nrows = 20000, header = TRUE)
    df2 <- read.table ("archivo2.txt", nrows = 20000, header = TRUE)
    

    Esto leerá las primeras 20,000 filas de cada marco de datos.

    1. Realiza una muestra aleatoria de 20,000 filas de cada marco de datos utilizando la función sample_n(). Por ejemplo:
    df1_sample <- sample_n (df1, 20000)
    df2_sample <- sample_n (df2, 20000)
    

    Esto realizará una muestra aleatoria de 20,000 filas de cada marco de datos.

    Nota: Si tus marcos de datos tienen un gran número de columnas, es posible que debas seleccionar un subconjunto de las columnas para reducir el uso de memoria mientras se lee el conjunto de datos. Puedes hacer esto utilizando la argumento select de la función read.table(). Por ejemplo:

    df1 <- read.table ("archivo1.txt", nrows = 20000, header = TRUE, select = c ("columna1", "columna2", "columna3"))
    

Comments are closed.