Tengo datos cargados desde un archivo csv (mydata.csv).
mydata = read.csv('somefile')
Las dos columnas con las que quiero trabajar (mydata ['nombre'] y mydata ['puntuación']) tienen datos como este
name score
sally 5
peter 10
sally 50
peter 25
mandy 100
mandy 0
El conjunto de datos tiene más de 3 nombres pero, por ejemplo, solo di tres nombres. Lo que quiero hacer es obtener los 10 nombres principales con la puntuación media más alta y almacenar esa información.
Además, en qué tipo de datos es mejor almacenar los resultados (matriz, lista, etc.) si quiero graficar estos puntos (nombres, puntaje) en un ggplot usando x para nombre ey para puntaje.
Creo el marco de datos y me limitaré a 2 nombres con el puntaje promedio más alto en lugar de los 10 originales debido al límite de datos:
df<-data.frame(name =c('sally','peter','sally','peter','mandy','mandy'),score=c(5,10,50,25,100,0))
library("dplyr")
FinalOutput <- df %>%
group_by(name) %>% #group by name
summarise(avg_score=mean(score)) %>% #create variabele "avg_score" which hold the mean of scores for each name
top_n(2) %>% #select the top 2, you can change it to 10 with your real data
arrange(desc(avg_score)) #arrange in a descending fashion to get the names with highest avg_score
Aquí hay una captura de pantalla de la salida:
# A tibble: 2 x 2
# name avg_score
# <fct> <dbl>
#1 mandy 50.0
#2 sally 27.5
aquí está para salvarlo:
write.csv(FinalOutput,file="FinalOutput.csv")
y aquí está para trazarlo:
print(ggplot(data = FinalOutput, aes(x = name, y = avg_score))+ geom_point())
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras