La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuál es la diferencia entre una lista y un marco de datos en R?

¿Cuál es la diferencia entre una lista y un marco de datos en R?

Lista en lenguaje R:

Es una forma general de vector. No necesita garantizar que los elementos sean del mismo tipo, y los elementos suelen ser vectores. la lista misma.

Marco de datos:

El marco de datos generalmente se traduce como un marco de datos. Se siente como una tabla en R, que consta de filas y columnas. Lo que se diferencia de una lista es que. cada columna puede ser de un tipo de datos diferente, mientras que las listas deben ser las mismas.

Cada columna del marco de datos tiene un nombre de columna y cada fila también puede especificar un nombre de fila. Si no especifica un nombre de fila, cada fila se identificará mediante una secuencia que aumenta desde 1.

Inicialización

Utilice la función data.frame para inicializar un Data Frame. Por ejemplo, si queremos inicializar el marco de datos de un estudiante, que contiene ID, nombre, sexo y fecha de nacimiento, entonces el código es:

estudiante<-data.frame(ID=c(11,12 ,13),Nombre =c("Devin","Edward","Wenli"),Género=c("M","M","F"),Fecha de nacimiento=c("1984-12-29", "1983-5-6","1986-8-8"))

Además, también puede utilizar read.table() read.csv() para leer un archivo de texto y el resultado devuelto. Los datos también son un objeto de marco de datos. La lectura de la base de datos también devuelve un objeto de marco de datos.

Ver el contenido del estudiante:

ID Nombre Género Fecha de nacimiento

1 11 Devin M 1984-12-29

2 12 Edward M 1983-5-6

3 13 Wenli F 1986-8-8

Aquí solo se especifican los nombres de las columnas: ID, Nombre, Sexo y Fecha de nacimiento. Utilice la función de nombres para. ver el nombre de las columnas, si desea ver los nombres de las filas, debe usar la función row.names. Aquí queremos usar el ID como nombre de la fila, así que podemos escribirlo así:

row.names(student)<-student$ID

Una forma más sencilla es inicializar fecha.marco A veces, hay un parámetro fila.nombres que puede establecer un vector de nombres de fila.

Acceso a elementos

Al igual que Matrix, utilice

Utilice el índice o el nombre de la columna para seleccionar a qué columnas desea acceder. Por ejemplo, si desea ID y Nombre, el código es:

idname<-student[1:2]

o

idname<-student[ c(" ID","Name")]

Si solo accede a una determinada columna y el valor devuelto es un tipo Vector, puede usar [[ o $ para acceder. Por ejemplo, si queremos los nombres de todos los alumnos, el código es:

nombre<-estudiante[[2]] o nombre<-estudiante[["Nombre"]] o nombre<-estudiante$ Nombre

El uso de las funciones adjuntar y separar le permite acceder a columnas sin que siempre estén precedidas por el nombre de la variable.

Por ejemplo, si desea imprimir todos los nombres, puede escribir:

adjuntar(estudiante)

imprimir(Nombre)

separar(estudiante)

También puedes escribirlo de una manera más sencilla usando la función with:

with(estudiante,{

n<-Nombre

print(n)

})

El alcance de n aquí solo está dentro de las llaves si desea asignar variables globales en la función with. , debe utilizar << - dicho operador.

Modificar el tipo de datos de la columna

A continuación comprobamos el tipo de cada columna del objeto. Usando str(student) podemos obtener los siguientes resultados:

. 'data.frame ':3 obs. de 4 variables:

$ ID: num 1 2 3

$ Nombre: Factor con 3 niveles "Devin","Edward", ..: 1 2 3

$ Género: Factor con 2 niveles "F","M": 2 2 1

$ Fecha de nacimiento: Factor con 3 niveles "1983- 5-6" ,"1984-12-29",..: 2 1 3

Por defecto, el vector de cadena será reconocido automáticamente como Factor, es decir, el ID es de tipo numérico y las otras tres columnas Todas están definidas como tipos de factores. Obviamente, el Nombre aquí debe ser de tipo cadena y la Fecha de nacimiento debe ser de tipo Fecha. Necesitamos cambiar el tipo de datos de la columna:

estudiante$Nombre<-as.character(estudiante$Nombre).

student$Birthdate<-as.Date(student$Birthdate)

Ejecutemos str(student) nuevamente para ver los resultados modificados:

'data. frame': 3 obs. de 4 variables:

$ ID: num 11 12 13

$ Nombre: chr "Devin" "Edward" "Wenli"

$ Género: Factor con 2 niveles "F","M": 2 2 1

$ Fecha de nacimiento: Fecha, formato: "1984-12-29" "1983-05-06" "1986 -08- 08”

Agregar una nueva columna

Para los objetos de estudiantes existentes, queremos agregar la columna Edad, que se calcula en función de la fecha de nacimiento. Primero necesitas saber cómo calcular la edad. Podemos usar la función de fecha Sys.Date() para obtener la fecha actual, luego usar la función de formato para obtener el año y luego restar los dos años para obtener la edad. Parece que R no proporciona varias funciones de fecha utilizables. Solo podemos usar la función de formato para sacar la parte del año y luego convertirla al tipo int para restar.

Estudiante$Edad<-as.integer(format(Sys.Date(),"%Y"))-as.integer(formato(estudiante$Fecha de nacimiento,"%Y"))

Parece demasiado largo escribir así. Podemos usar la función inside. Esta función es similar a la función with mencionada anteriormente. La diferencia es que la función inside puede modificar la variable en. eso, que es lo que tenemos aquí. Agregar columna Edad:

student<-within(student,{

Age<-as.integer(format(Sys.Date(), "%Y"))-as. integer(format(Birthdate,"%Y"))

})

Consulta/Subconjunto

Consultar una fecha Enmarcar y devolver un subconjunto que cumpla las condiciones Conjunto, que equivale a una consulta de tabla en una base de datos, es una operación muy común. Usar el índice de filas y columnas para obtener subconjuntos es la forma más sencilla, como se mencionó anteriormente. Si usamos un vector booleano con la función what, podemos filtrar filas. Por ejemplo, si queremos consultar todos los datos cuyo género es F, primero configuramos Student$Gender=="F" para obtener un vector booleano: FALSO FALSO VERDADERO, y luego usamos la función Which para devolver el índice de VERDADERO en el vector booleano, por lo que nuestra declaración de consulta completa es:

estudiante[cuál(estudiante$Género=="F"),]

Tenga en cuenta que la columna Índice no se ingresa aquí Si solo queremos conocer la información de la edad de todas las niñas, entonces se puede cambiar a:

estudiante[cuál(estudiante$Género=="F"),"Edad"]

.

Este tipo de consulta todavía es un poco complicada de escribir, puede usar directamente la función de subconjunto, la consulta será más simple. Por ejemplo, si cambiamos la condición de consulta a mujeres <30 y verificamos el nombre y la edad, entonces la declaración de consulta es:

subset(student,Gender=="F" & Age<30 ,select=c("Name","Ege"))