¿Alguien puede decirme cómo leer solo los primeros 6 meses (7 columnas) para cada año de los datos a continuación, por ejemplo utilizando read.table()?
Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2009 -41 -27 -25 -31 -31 -39 -25 -15 -30 -27 -21 -25
2010 -41 -27 -25 -31 -31 -39 -25 -15 -30 -27 -21 -25
2011 -21 -27 -2 -6 -10 -32 -13 -12 -27 -30 -38 -29

NULLcomo una clase de columna en su respuesta .Respuestas:
Digamos que los datos están en el archivo
data.txt, puede usar elcolClassesargumento deread.table()para omitir columnas. Aquí los datos en las primeras 7 columnas son"integer"y configuramos las 6 columnas restantes para"NULL"indicar que deben omitirseCambie
"integer"a uno de los tipos aceptados según se detalla en?read.tablefunción del tipo real de datos.data.txtSe ve como esto:y fue creado usando
donde
datestaSi el número de columnas no se conoce de antemano, la función de utilidad
count.fieldsleerá el archivo y contará el número de campos en cada línea.fuente
nrows. Luego calcule cuántas columnas está usandoncol(), o de lo contrario desea calcular la cantidad de columnas para leer / ignorar. Luego lea el archivo completo con esta información.count.fields()que automatiza el proceso que sugerí en los comentarios.count.fields()una conexión de texto, entonces, lea un subconjunto de las filas usandotxt <- readLines(....), luego cree una conexión a la lectura en líneascon <- textConnection(txt), luego hagacount.fields(txt). Asegúrese de utilizarskipencount.fields()saltarse la fila de encabezado si hay uno; no puede omitir filas en el archivo usandoreadLines().Para leer un conjunto específico de columnas de un conjunto de datos, hay varias otras opciones:
1) Con
freaddesde eldata.tablepaquete:Puede especificar las columnas que desee con el
selectparámetro a partirfreaddeldata.tablepaquete. Puede especificar las columnas con un vector de nombres de columna o números de columna.Para el conjunto de datos de ejemplo:
Alternativamente, puede usar el
dropparámetro para indicar qué columnas no deben leerse:Todo resulta en:
ACTUALIZACIÓN: cuando no desee
freaddevolver una tabla de datos , use el parámetro -pordata.table = FALSEejemplo:fread("data.txt", select = c(1:7), data.table = FALSE)2) Con
read.csv.sqldesde elsqldfpaquete:Otra alternativa es la
read.csv.sqlfunción delsqldfpaquete:3) Con las
read_*-funciones del -paquetereadr:De la documentación, una explicación de los caracteres utilizados con
col_types:fuente
freadSin embargo, no admite archivos comprimidos. Los archivos grandes generalmente están comprimidos.fread. Vale la pena notar quefreades muy probable que lea el archivo sin comprimir considerablemente más rápido queread.tableel archivo comprimido. Ver aquí para un ejemplo .read.tableno lo salvará. En ese caso, es posible que desee ver elffpaquete.freadpara leer grandes archivos comprimidos como esto:fread("gunzip -c data.txt.gz", drop = c(8:13)).También podría usar JDBC para lograr esto. Creemos un archivo csv de muestra.
Descargue y guarde el controlador CSV JDBC desde este enlace: http://sourceforge.net/projects/csvjdbc/files/latest/download
fuente
Lo haces así:
fuente