Un estudio de caso sobre el uso de R para procesar datos
Combina los puntajes de las pruebas de materias de un estudiante en una sola medida de desempeño, otorgando de A a F según la clasificación relativa (20% superior, 20% inferior, etc.), y ordena la lista según los apellidos e iniciales de los estudiantes
El código es el siguiente:
[python] ver copia simple
imprimir?
opciones(dígitos = 2)
Estudiante<-c("John Davis", "Angela Williams", "Bullwinkle Moose", "David Jones",
" Janice Markhammer", "Cheryl Cushing", "Reuven Ytzrhak", "Greg Knox",
"Joel England", "Mary Rayburn")
Matemáticas<-c(502,600,412,358.495, 512,410,625,573,522 )
Ciencia<-c(95,99,80,82,75,85,80,95,89,86)
Inglés<-c(25,22, 18 ,15,20,28,15,30,27,18)
lista<-data.frame(Estudiante,Matemáticas,Ciencias,Inglés,stringsAsFactors = FALSE)
cabeza ( lista)
tail(lista)
z<- escala(lista[,2:
puntuación<-apply(z, 1, media) < / p>
lista<-cbind(roster,score)
ayuda(quantile)
y<-quantile (score,c(.8,.6,.4, .2))
str(y)
lista$grado[score>=y[1]]<-"A"
lista$grado [ puntuación
lista$calificación[puntuación<y[2]& puntuación>=y[3]]<-" C "
lista$calificación[puntuación
lista$calificación[puntuación nombre<-strsplit((roster$Estudiante)," ") apellido<-sapply(nombre,"[",2) nombre<-sapply(nombre, "[",1) lista<-cbind(nombre,apellido, lista[,-1]) lista<- lista [pedido (apellido, apellido),] lista[,-9] El código anterior está escrito de una manera muy concisa y los pasos específicos son los siguientes. Paso 1 Entregar la lista de estudiantes original. opciones(dígitos=2) limita el número de dígitos en la salida al número de dígitos después del punto decimal y hace que la salida sea más fácil de leer. Paso 2 Debido a que los puntajes en las pruebas de matemáticas, ciencias e inglés son diferentes (las medias y las desviaciones estándar son muy diferentes), es necesario compararlas antes de combinarlas. Un enfoque consiste en estandarizar las variables de modo que las puntuaciones de cada prueba de materia se midan en unidades de desviación estándar en lugar de en unidades de la escala original. Este proceso se puede realizar utilizando la función scale(). [python] ver copia simple ¿imprimir? z Matemáticas y Ciencias Inglés [1 , ] 0,013 1,078 0,587 [2,] 1,143 1,591 0,037 [3,] -1,026 -0,847 -0,697 [4,] -1,649 - 0,590 -1,247 [5,] -0,068 -1,489 -0,330 [6,] 0,128 -0,205 1,137 [7,] -1,049 - 0,847 - 1,247 [8,] 1,432 1,078 1,504 [9,] 0,832 0,308 0,954 [10,] 0,243 -0,077 -0. El paso 3 usa la función mean() para calcular el promedio de cada fila para obtener una puntuación compuesta, y usa la función cbind() para agregarlo a la lista: [python] view copia simple p> imprimir? >lista[,-9] nombre apellido apellido.1 Matemáticas Ciencias Inglés Puntuación 5 Cheryl -Ku Mark Hammer 495 75 20 -0,63 6 John Davis Cushing 512 85 28 0,35 2 Joel England Williams 600 99 22 0,92 4 Davy Jones Jones 358 82 15 -1,16 10 Greg Knox Rayburn 522 86 18 -0,18 8 Janice Markhammer Knox 625 95 30 1,34 9 Bullwinkle Moose Inglaterra 573 89 27 0,70 7 Mary Rayburn Ytzrhak 410 80 15 -1,05 1 Angela Williams Davis 502 95 25 0,56 3 Reuven Ytzrhak Moose 412 80 18 -0,86 p> Paso 4 La función cuantil() da el percentil del número de puntuación integral del estudiante. Como puede ver, el límite para el grado A es 0,74, el límite para el grado B es 0,44, y así sucesivamente. [python] ¿Ver texto sin formato imprimir? > y 80% 60% 40% 20% 0,74 0,44 -0,36 -0,89 Paso 5 Al utilizar operadores lógicos, el rango percentil del estudiante se puede recodificar en una nueva variable de rendimiento basada en categorías. A continuación, creará la variable de calificación en la lista del marco de datos En el paso 6, utilizará la función strsplit() para dividir el nombre del estudiante en espacios en nombre y apellido. La aplicación de strsplit() a un vector de cadenas devuelve una lista: [python] Ver texto sin formato imprimir? nombre<-strsplit((roster$ Estudiante)," ") [ python] Ver copia pura ¿imprimir? > nombre [[1]] [1] "John" "Davis" [[2]] [1] "Ángela" "Williams" [[3]]