¿Cuáles son los mejores paquetes de R? ¿Por qué?

Si te gusta la minería de datos, he encontrado que lars [1] y gbm [2] son ​​útiles.

Recientemente también he escuchado cosas buenas sobre caret [3], pero no he tenido la oportunidad de usarlo yo mismo.

Yang Zhang menciona algunos más en una reciente publicación de blog [4]: data.table [5] y zoo [6]. También señaló la manipulación de RStudio [7] en Twitter.

He usado lubridate [8] recientemente; hace que trabajar con fechas y horarios sea un poco más amigable.

Además, según [9], glmnet y randomForest son los dos algoritmos más importantes en el modelo predictivo actual.

En un screencast de Jeremy Howard de Kaggle [10], usa algunas funciones de caTools [11] que parecen útiles.

Recientemente descubrí knitr [12], que parece una buena alternativa a Sweave.

[1] http://cran.r-project.org/web/pa…
[2] http://cran.r-project.org/web/pa…
[3] http://caret.r-forge.r-project.org/
[4] http://yz.mit.edu/wp/whats-there…
[5] http://cran.r-project.org/web/pa…
[6] http://cran.r-project.org/web/pa…
[7] http://rstudio.org/docs/advanced…
[8] http://cran.r-project.org/web/pa…
[9] http://strataconf.com/strata2012…
[10] http://media.kaggle.com/MelbURN….
[11] http://cran.r-project.org/web/pa…
[12] http://yihui.name/knitr/

Mucha gente enumeró plyr aquí, y no puedo resistirme a mencionar dplyr (el paquete de plyr de próxima generación que fue desarrollado por Hadley Wickham). La “d” en dplyr significa marco de datos: este paquete fue diseñado con casos de uso de manipulación de marco de datos desde el principio.

Si trabaja con frecuencia con marcos de datos, ya sea para análisis o mezcla de datos, se sorprenderá de cómo dplyr puede mejorar la precisión y legibilidad de su código. Algunas razones por las que amo tanto a dplyr:

SQL como la sintaxis

Las operaciones de datos comunes como seleccionar, filtrar, organizar, agrupar_por, resumir, mutar son muy fáciles de entender (el costo de cambio es especialmente pequeño si ya conoce plyr). Estas operaciones lo ayudan a estructurar su análisis y dividir las cosas en fragmentos lógicos.

Ejemplo: supongamos que tenemos un conjunto de datos imdb, y estamos interesados ​​en obtener para cada año, el número de películas que tienen ingresos de taquilla superiores a 100 millones, en orden cronológico inverso.

  df.filtered = df [df $ ingresos> 1M,]
 df.cnt.by.year = ddply (df.filtered,. (año), resumen, cnt = longitud (nombre))
 df.by.year.ordered = df.cnt.by.year [pedido (-df.cnt.by.year $ año),]

En dplyr, podemos reescribir estos pasos como

  df.filtered = filter (df, ingresos> = 1M)
 df.grouped = group_by (df.filtered, año)
 df.cnt.by.year = summaryize (df.grouped, cnt = n ())
 df.cnt.by.year.ordered = organizar (df.cnt.by.year, -year)

El código puede parecer un poco más detallado, pero aquí está la segunda cosa maravillosa sobre dplyr que haría su código mucho más limpio:

Encadenamiento de manipulación de datos

2. %>% : este símbolo representa la operación de tubería. Esencialmente, puede usar el símbolo de tubería para encadenar sus manipulaciones de datos, por lo que no necesita almacenar resultados intermedios.

Veamos el mismo ejemplo y veamos cómo se puede simplificar aún más el código.

  df.final = df%>% 
    filtro (ingresos> = 1000000)%>% 
    group_by (año)%>% 
    resumir (cnt = n ())%>% 
    organizar (desc (año))

Mire lo limpio que es esto, no se requieren marcos de datos intermedios, y cada paso de manipulación de datos es dolorosamente obvio para el lector, y puede olvidarse de hacer referencia a nombres de variables usando $ sign de ahora en adelante.

Finalmente, incluso puede canalizar estos datos en ggplot2 si lo desea

  df.  % final>% 
     ggplot (aes (x = año, y = cnt)) + geom_line ()

Puede pensar en $%>% como x%>% f (y) = f (x, y) $, por lo que las funciones comunes como head (), tail (), str () pueden encadenarse con el operando pipe.

Funciones de Windows, integración con bases de datos.

También puede aplicar funciones de ventana, muy parecidas a la función de análisis en Vertica. Cosas como rango, retraso son muy útiles si se trata de datos de series de tiempo.

Para aquellos que no conocen SQL, puede leer las relaciones como si fueran marcos de datos y hacer su agregación utilizando las construcciones dplyr nativas.

Recursos:

Espero que al menos tengas curiosidad por este paquete. Hay muchos buenos tutoriales por ahí, y comenzaría con las viñetas de dplyr:

Introducción a dplyr
Tutorial práctico de dplyr para una manipulación de datos más rápida en R
Funciones de ventana y mutación / filtro agrupados

¡Esto debería ayudarte a comenzar!

1> data.table : ¡Utilizo esto con la mayor frecuencia posible para la velocidad a la que extrae los datos! Nunca uso la función read.csv () predeterminada, ya que se ralentiza a medida que aumenta el tamaño de los datos. También hay buenas funciones, como% in% y% like%, que facilitan el subconjunto de datos condicionales.
2> dplyr : no hace falta decir que este es uno de los mejores paquetes para la manipulación de datos.
3> knittr: Si tienes la costumbre de documentar tu trabajo, ¡este es el paquete para ti! ¡Hacer documentos de rebaja nunca ha sido tan fácil!
4> shiny, shinydashboard: hacer tableros interactivos para sus aplicaciones es muy sencillo.
5> devtools: este es el paquete swiss-army-knife. Tiene una variedad de funciones, desde desarrollar paquetes R hasta realizar la instalación de paquetes no CRAN de git.
6> plotly: llama a la API de gráficos plotly para crear gráficos visualmente atractivos e interactivos. En mi opinión, esto es más hermoso y funcional que ggplot2, que produce gráficos estáticos.
7> sqldf: para aquellos que están familiarizados con los comandos de tipo SQL para la manipulación de datos, ¡no busque más! (PS: funcionalidad limitada en uniones)

Estos son algunos de mis paquetes favoritos:

  1. dplyr: manipulación rápida de datos
  2. Caret: facilita el aprendizaje automático
  3. ggplot2: visualización elegante
  4. doMC: computación paralela (multi-core)
  5. corrplot: visualiza bellamente la matriz de correlación