vectores vacio una tabla studio matriz matrices hacer español ejemplos data crear convertir concatenar con columnas r if-statement matrix numeric

vacio - hacer una matriz con vectores en r



Forma correcta de convertir data.frame a una matriz numérica, cuando df también contiene cadenas? (6)

Aquí hay una manera alternativa si el marco de datos solo contiene números.

apply(as.matrix.noquote(SFI),2,as.numeric)

pero la forma más confiable de convertir un marco de datos a una matriz es usando la función data.matrix() .

Tengo un marco de datos tomado de un archivo .csv que contiene valores numéricos y de caracteres. Quiero convertir este marco de datos en una matriz. Toda la información que contiene es números (las filas sin número que eliminé), por lo que debería ser posible convertir el marco de datos en una matriz numérica. Sin embargo, obtengo una matriz de caracteres.

Encontré que la única manera de resolver esto es usar como as.numeric para cada fila, pero esto lleva bastante tiempo. Estoy bastante seguro de que hay una manera de hacer esto con algún tipo de forma if(i in 1:n) , pero no puedo entender cómo podría funcionar. ¿O es la única manera de comenzar realmente con valores numéricos, como se propone aquí ( Hacer matrices numéricas y ordenar nombres )?

Probablemente esto sea algo muy fácil para la mayoría de ustedes: P

La matriz es mucho más grande, estas son solo las primeras filas ... Aquí está el código:

cbind( as.numeric(SFI.Matrix[ ,1]), as.numeric(SFI.Matrix[ ,2]), as.numeric(SFI.Matrix[ ,3]), as.numeric(SFI.Matrix[ ,4]), as.numeric(SFI.Matrix[ ,5]), as.numeric(SFI.Matrix[ ,6])) # to get something like this again: Social.Assistance Danger.Poverty GINI S80S20 Low.Edu Unemployment 0.147 0.125 0.34 5.5 0.149 0.135 0.18683691 0.258 0.229 0.27 3.8 0.211 0.175 0.22329362 0.207 0.119 0.22 3.1 0.139 0.163 0.07170422 0.219 0.166 0.25 3.6 0.114 0.163 0.03638525 0.278 0.218 0.29 4.1 0.270 0.198 0.27407825 0.288 0.204 0.26 3.6 0.303 0.211 0.22372633

¡Gracias por cualquier ayuda!


Editar 2: Ver la respuesta de @flodel. Mucho mejor.

Tratar:

# assuming SFI is your data.frame as.matrix(sapply(SFI, as.numeric))

Editar: o como @ CarlWitthoft sugirió en los comentarios:

matrix(as.numeric(unlist(SFI)),nrow=nrow(SFI))


Llené manualmente las NA exportando el archivo CSV y luego editando y reimportando, como se muestra a continuación.

Tal vez uno de ustedes expertos podría explicar por qué este procedimiento funcionó tan bien (el primer archivo tenía columnas con datos de tipos char , INT y num (números de punto flotante)), todos convertidos en tipo de caracteres después del PASO 1; pero al final del PASO 3 R reconoció correctamente el tipo de datos de cada columna).

# STEP 1: MainOptionFile <- read.csv("XLUopt_XLUstk_v3.csv", header=T, stringsAsFactors=FALSE) #... STEP 2: TestFrame <- subset(MainOptionFile, str_locate(option_symbol,"120616P00034000") > 0) write.csv(TestFrame, file = "TestFrame2.csv") # ... # STEP 3: # I made various amendments to `TestFrame2.csv`, including replacing all missing data cells with appropriate numbers. I then read that amended data frame back into R as follows: XLU_34P_16Jun12 <- read.csv("TestFrame2_v2.csv", header=T,stringsAsFactors=FALSE)

A su regreso a R, todas las columnas tenían sus niveles de medición correctos reconocidos automáticamente por R!


Otra forma de hacerlo es usar el argumento read.table () colClasses para especificar el tipo de columna haciendo colClasses = c ( tipos de clase de columna ). Si hay 6 columnas cuyos miembros desea como numéricos, debe repetir la cadena de caracteres "numérica" ​​seis veces separadas por comas, importar el marco de datos y as.matrix () el marco de datos. PS parece que tienes encabezados, entonces pongo header = T.

as.matrix(read.table(SFI.matrix,header=T, colClasses=c("numeric","numeric","numeric","numeric","numeric","numeric"), sep=","))


Tuve el mismo problema y lo resolví así, tomando el marco de datos original sin nombres de fila y agregándolos luego

SFIo <- as.matrix(apply(SFI[,-1],2,as.numeric)) row.names(SFIo) <- SFI[,1]


data.matrix(SFI)

De ?data.matrix :

Description: Return the matrix obtained by converting all the variables in a data frame to numeric mode and then binding them together as the columns of a matrix. Factors and ordered factors are replaced by their internal codes.