Translate

viernes, 20 de enero de 2017

Apuntes de R


Básicos de entorno y lectura/escritura de ficheros:


  • Configurar el directorio de trabajo:


setwd("C:/User")


  • Recoger directorio de trabajo:


getwd()


  • Concatenar cadenas:


nombreruta <- paste(getwd(),"/decathlon.csv", sep = "")


  • Leer fichero CSV:


decatch <- read.csv(nombreruta, encoding="UTF-8",
                    header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)


  • Escribir dataset en CSV:


paraExcel <- data.frame(decatch$score,decatch$pais) names(paraExcel) <- c('score','pais') nombreruta_salida_PEC3 <- paste(getwd(),"/anova.csv", sep = "")


write.csv(paraExcel,nombreruta_salida,row.names = FALSE)


  • Leer fichero JSON:


library("rjson")
json_data <- fromJSON(file=json_file)


Cálculos Estadísticos básicos:


  • Media:


mean(df.Longitud)


  • Mediana:


median(df.Longitud)


  • Desviación típica:


sd(df.Longitud)


  • Correlación entre variables:


cor(df$followers,df$count)


  • Resumen de los datos estadísticos de un data frame:


summary(df)


  • Estadístico Z:


Calcular el intervalo de confianza de 95% de la media poblacional conociendo la desviación estándar, en este caso desviacionTipicaMuestralPrecio = sd(Data_PEC2$precio)



library(TeachingDemos)
z.test(df$precio,mu = mm, stdev = desviacionTipicaMuestralPrecio,alternative = "two.sided",conf.level = 0.95)


  • Estadístico T Student:




library(TeachingDemos)
t.test(df$precio, y=NULL, alternative = c("two.sided"), mu = n, paired = FALSE, var.equal = FALSE, conf.level = 0.95)


Data Frames


  • Creación de un data frame con dos o más  vectores. Los vectores tienen que tener el mismo número de registros:


df <- data.frame(ids, ret_ids)


  • Elegir columnas en un data frame. En este caso se requiere todas las filas del data frame, y las columnas del 1 al 10


df[,1:10]


  • Queries a un data frame en formato SQL. Selecciona del dataframe dfRTweet todos los ids distintos del data set y que no son igual a NA.


require(sqldf)


df.nodup <- sqldf('SELECT DISTINCT ids FROM df where ids <> "NA" order by creado DESC')


  • Tipos de datos:
Consulta el tipo de datos del data frame df:


str(df)


  • Renombrar columnas de un data frame:
En este caso nombramos la primera columna como ids, segunda como Count y tercera como Followers.


names(dfT) <- c('ids','count','followers')


  • Ver los datos de un dataframe en RStudio:


View(df)


  • Enfrentamiento (Join) entre data frame


Right join, enfrentando dos data frames por la clave “ids”
df.filtrado <- right_join(dfordenado,dfnodup, by="ids")


  • Concatenación de data frames:


do.call ejecuta la instruccion “rbind” para la lista de data frames indicadas en list.
dfTodos <- do.call("rbind", list(dfMentions, dfReplies, dfRetweet))


  • Filtro de datos en un data frame:


En este caso se filtran los registros del data frame dfMales donde el campo year sea igual a 1987.


Y1987 <- dfMales[dfMales$year == 1987,]


  • Mostrar los primeros registros de un data frame:


Con el siguiente comando se muestran los primeros 50 registros del data frame Y1987.


head(Y1987,50)


  • Mostrar los últimos registros de un data frame:


Con el siguiente comando se muestran los últimos 50 registros del data frame Y1987.


tail(Y1987,50)


  • Cálculo de una nueva columnas con dos columnas de un data frame:


nuevaCol <- c(Y1987$exper + Y1987$school + 6)


Añadir una nueva columna al data frame:


Y1987$age <- nuevaCol


  • Calcular el valor máximo de una columna de un data frame:
max(Y1987$age)


  • Calcular el valor mínimo de una columna de un data frame:
min(Y1987$age)


  • Consulta de los nombres de las columnas de un data frame:


Consulta el nombre de las columnas del data frame Males.
ls(dfMales)


  • Número de columnas de un data frame:


ncol(dfMales)


  • Número de filas de un data frame:


nrow(dfMales)


  • Contar los valores distintos de un campo:


En este caso seria contar de cuantas veces aparece cada uno de los valores distintos del campo industry.
data.frame(table(Y1987$industry))


  • Calcular el valor medio de los distintos valores de una columna:
En este caso se calcularía la media del campo wage, para los distintos valores del campo industry.
aggregate(Y1987$wage ~ Y1987$industry, Y1987, mean)


  • Filtrar por un valor y mostrar sólo ciertas columnas:
En este caso se filtrarian los registros cuya columna health sea igual a yes, y mostraria tres columnas, la columna X, la columna health y la columna wage.
Y1987[Y1987$health == "yes",c("X","health","wage")]


  • Calcular el exponencial de cada valor de una columna numérica en un data frame:


Y1987$wage <- exp(Y1987$log_wave)


  • Seleccionar un porcentaje de datos de un dataframe para training y para testing:


#se genera una partición con el 70% de los registros de Y1987NoOutliners
particion <- sample.split(Y1987NoOutliners,SplitRatio = 0.7)
#se genera un data.frame train, con el 70% de los registros
train <- subset(Y1987NoOutliners,particion)
#se genera un data.frame test con el resto de los registros de Y1987NoOutliners, es decir el 30%.
test <- subset(Y1987NoOutliners,!particion)


Lista


  • Tratamiento recursivo de Listas:


En este caso recupera aquellos ids, de una estructura json de twitter siempre que el campo venga informado.
dfOriginal.ids <- sapply(json_data,function(x) if(is.null(x$retweeted_status$id_str)) NA else x$retweeted_status$id_str)


Vectores


  • Concatenación de vectores:


Concatena los vectores, user_mentions, user_replies_ids y user_Retweet_ids en el vector user_vector.
user_vector <- c(user_mentions,user_Replies_ids,user_Retweet_ids)


Factores


  • Renombrar Factores:
Podemos usar la función revalue de la libreria plyr que nos permite renombrar los niveles del atributo industry, ya que este atributo es de clase factor.


Y1987$industry <- revalue(Y1987$industry, c("Agricultural"="Agricultural and Mining", "Mining"="Agricultural and Mining"))




No hay comentarios:

Publicar un comentario