Especificación de colClasses en read.csv

Estoy tratando de especificar las opciones colClasses en la función read.csv en R. En mis datos, la primera columna “tiempo” es básicamente un vector de caracteres, mientras que el rest de las columnas son numéricas.

 data <- read.csv("test.csv", comment.char="" , colClasses=c(time="character", "numeric"), strip.white=FALSE) 

En el comando anterior, quisiera que R lea en la columna “tiempo” como “carácter” y el rest como numérico. Aunque, la variable “datos” tuvo el resultado correcto después de completar el comando, R devolvió las siguientes advertencias. Me pregunto cómo podría arreglar estas advertencias.

 Warning messages: 1: In read.table(file = file, header = header, sep = sep, quote = quote, : not all columns named in 'colClasses' exist 2: In tmp[i[i > 0L]] <- colClasses : number of items to replace is not a multiple of replacement length 

Derek

    El vector colClasses debe tener una longitud igual al número de columnas importadas. Suponiendo que el rest de las columnas de su conjunto de datos son 5:

     colClasses=c("character",rep("numeric",5)) 

    Puede especificar colClasse para solo una columna.

    Entonces en tu ejemplo deberías usar:

     data < - read.csv('test.csv', colClasses=c("time"="character")) 

    Asumiendo que su columna de “tiempo” tiene al menos una observación con un carácter no numérico y todas sus otras columnas solo tienen números, entonces ‘valor predeterminado de read.csv será leer en’ tiempo ‘como un’ factor ‘y todo el rest de las columnas como ‘numéricas’. Por lo tanto, establecer ‘stringsAsFactors = F’ tendrá el mismo resultado que configurar ‘colClasses’ manualmente, es decir,

     data < - read.csv('test.csv', stringsAsFactors=F) 

    Si desea consultar los nombres del encabezado en lugar de los números de columna, puede usar algo como esto:

     fname < - "test.csv" headset <- read.csv(fname, header = TRUE, nrows = 10) classes <- sapply(headset, class) classes[names(classes) %in% c("time")] <- "character" dataset <- read.csv(fname, header = TRUE, colClasses = classes) 

    Para varias columnas de fecha y hora sin encabezado y muchas columnas, supongamos que mis campos de fecha y hora están en las columnas 36 y 38, y quiero que se lean como campos de caracteres:

     data< -read.csv("test.csv", head=FALSE, colClasses=c("V36"="character","V38"="character"))