Creación de marcos de datos
Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 42 de 64.
Un data frame es la tabla de R: cada columna es un vector con su propio tipo y todas las columnas tienen la misma longitud, un valor por fila. data.frame() construye uno a partir de vectores con nombre:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people)Salida:
name age city
1 ada 36 london
2 bo 22 paris
3 cy 41 romenrow() y ncol() indican el tamaño, y names() muestra las columnas. A diferencia de una matriz, las columnas pueden contener distintos tipos: aquí, texto y números.
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))Salida:
[1] 3
[1] 3
[1] "name" "age" "city"str() muestra el tipo y los primeros valores de cada columna, lo que constituye una forma rápida de comprobar qué contiene un marco de datos:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
str(people)Salida:
'data.frame': 3 obs. of 3 variables:
$ name: chr "ada" "bo" "cy"
$ age : num 36 22 41
$ city: chr "london" "paris" "rome"Los datos suelen llegar como texto, con una fila por línea. read.csv(text = lines) convierte esas líneas en un marco de datos, usando la primera línea como nombres de las columnas y convirtiendo los números automáticamente:
lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))Salida:
item qty
1 tea 2
2 jam 5
[1] 7Desafío
FácilCompleta table_info(names, ages). Construye un marco de datos con las columnas name y age a partir de los dos vectores. Devuelve tres líneas: Rows: con el número de filas, Columns: con los nombres de las columnas unidos por , , y Oldest: con el nombre de la fila que tiene la edad más alta (la primera cuando hay empate en las edades).
El código proporcionado lee los nombres y las edades como dos líneas separadas por comas e imprime cada línea devuelta.
Pruébalo tú mismo
table_info <- function(names, ages) {
# Escribe tu código aquí
character(0)
}
# Código de entrada/salida suministrado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas a fondo
Subcadenas con substr()Formateo con sprintf()Dividir y unirBuscar cadenasReemplazar textoRepaso - Constructor de nombres de usuario4Matrices
Creación de matricesIndexación de matricesResúmenes de filas y columnasAritmética de matricesRepaso: tabla de asientos2Búsquedas clave-valor
Búsquedas en vectores con nombreComprobar clavesAñadir y eliminar clavesRecorrer nombresRepaso: panel bursátil5Proyecto - Libro de calificaciones
Añadir estudiantesRegistrar calificaciones3Conjuntos y conteo
Valores únicosOperaciones con conjuntosPruebas de pertenenciaConteo con table()Repaso: invitados al evento6Funciones como valores
Funciones anónimasPasar funcionesDevolver funcionesClausuras con estadoRepaso: reglas de descuento9Marcos de datos
Creación de marcos de datosColumnas y filasFiltrado de filasAdición y ordenaciónRepaso - Informe de ventas12Proyecto: Rastreador de gastos
Registro de gastosGasto totalPractica por tu cuenta: Compilador de R online