studio - limpieza de texto en r
Lectura de archivos de texto con espacio mĂșltiple como delimitador en R (3)
Debes cambiar tu delimitador. " "
refiere a un personaje de espacio en blanco. ""
refiere a cualquier espacio en blanco de longitud como delimitador
data <- read.table(file, sep = "" , header = F , nrows = 100,
na.strings ="", stringsAsFactors= F)
Del manual:
Si sep = "" (el valor predeterminado para read.table), el separador es ''espacio en blanco'', es decir, uno o más espacios, pestañas, nuevas líneas o retornos de carro.
Además, con un gran archivo de datos, es posible que desee considerar data.table:::fread
para leer rápidamente los datos directamente en un data.table. Yo mismo estaba usando esta función esta mañana. Todavía es experimental, pero creo que funciona muy bien.
Tengo un gran conjunto de datos que consta de alrededor de 94 columnas y 3 millones de filas. Este archivo tiene espacios únicos y múltiples como delimitador entre columnas. Necesito leer algunas columnas de este archivo en R. Para esto traté de usar read.table () con las opciones que se pueden ver en el siguiente código, el código se pega debajo-
### Defining the columns to be read from the file, the first 5 column, then we do not read next 24, after this we read next 5 columns. Last 60 columns are not read in-
col_classes = c(rep("character",2), rep("numeric", 3), rep("NULL",24), rep("numeric", 5), rep("NULL", 60))
### Reading first 100 rows of the data
data <- read.table(file, sep = " ",header = F, nrows = 100, na.strings ="", stringsAsFactors= F)
Como el archivo que tiene que leer tiene más de un espacio como delimitador entre parte de la columna, el método anterior no funciona. ¿Hay algún método que podamos leer en este archivo de manera eficiente?
Si desea utilizar el tidyverse
(o readr
respectivamente) en su lugar, puede usar read_table
en read_table
lugar.
read_table(file, col_names = TRUE, col_types = NULL,
locale = default_locale(), na = "NA", skip = 0, n_max = Inf,
guess_max = min(n_max, 1000), progress = show_progress(), comment = "")
Y mira aquí en la descripción:
read_table() and read_table2() are designed to read the type of textual data where
each column is #'' separate by one (or more) columns of space.
Si su campo tiene un ancho fijo, debería considerar usar read.fwf()
que podría manejar mejor los valores perdidos.