Quiero dividir un marco de datos grande en una lista de marcos de datos de acuerdo con los valores en dos columnas. Luego deseo aplicar una transformación de datos común en todos los marcos de datos (transformación de retardo) en la lista resultante. Soy consciente del comando dividir pero solo puedo hacer que funcione en una columna de datos a la vez.División de dataframe utilizando dos columnas de datos y aplicar transformación común en la lista de marcos de datos resultantes
25
A
Respuesta
6
¿qué tal ésta:
library(plyr)
ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2))
parece como un trabajo excelente para plyr
paquete y ddply()
función. Si aún hay preguntas abiertas, proporcione algunos datos de muestra. La división debe trabajar en varias columnas, así:
df<- data.frame(value=rnorm(100), class1=factor(rep(c('a','b'), each=50)), class2=factor(rep(c('1','2'), 50)))
g <- c(factor(df$class1), factor(df$class2))
split(df$value, g)
38
Es necesario poner todos los factores que desea dividir por en una lista, por ejemplo:
split(mtcars,list(mtcars$cyl,mtcars$gear))
continuación, puede utilizar lapply
en esto para hacer qué más quieres hacer
Cuestiones relacionadas
- 1. Aplicar sobre dos marcos de datos
- 2. Pegar columnas de dos marcos de datos
- 3. ¿Cómo combino dos marcos de datos basados en dos columnas?
- 4. Agregar dos marcos de datos de pandas
- 5. Combinar dos marcos de datos y eliminar columnas duplicadas
- 6. se divide siempre ordenando internamente los marcos de datos resultantes
- 7. ¿Cómo comparar dos marcos de datos?
- 8. Pandas DataFrame Aplicar
- 9. División de datos y rieles
- 10. Función agregada de Pandas DataFrame utilizando varias columnas
- 11. División de dataframe en múltiples archivos de salida
- 12. fusionar dos trama de datos basada en la coincidencia de dos columnas intercambiables en cada trama de datos
- 13. pandas: combinar dos columnas de una trama de datos
- 14. Aplicar pnorm a columnas de un marco de datos
- 15. Motores y marcos de minería de datos?
- 16. Aplicar la transformación de `GatherBy` a una lista diferente
- 17. División visual de datos en dos clases en matlab
- 18. Combina dos marcos de datos por filas (rbind) cuando tienen diferentes conjuntos de columnas
- 19. Giro de datos usando dos columnas
- 20. Fusionar marcos de datos sin duplicar filas
- 21. R iterar sobre columnas trama de datos
- 22. transformación de datos con SQL
- 23. ¿Cómo elimino marcos de datos vacíos de una lista?
- 24. ¿Hay marcos de almacenamiento de datos?
- 25. Convierta una lista de marcos de datos en un marco de datos
- 26. pandas trama de datos: aplicar la función a todas las columnas
- 27. Datos de salida de todas las columnas en un marco de datos en pandas
- 28. Fusionar 2 columnas de la tabla de datos en el campo de texto de datos de la lista desplegable
- 29. Transformación de datos que evita bucles anidados en R
- 30. Creación de marcos de datos grandes
Gracias por las respuestas! Descubrí que necesitaba poner las variables divididas en una lista y que se ocupaba del problema de "división" usando dos vars. Lea sobre el paquete plyr y de hecho es poderoso. Sin embargo, no puedo hacer que haga lo que quiero. Intenté este comando: llply (1: length (List), function (i) {temp <-List [[i]] $ a; List [[i]] $ b <-append (head (temp, -1), na, after = 0)}) y esperaba encontrar una nueva variable 'b' en cada dataframe contenido en 'List'. El comando imprime la lista de resultados [[i]] $ b en la pantalla. ¿Qué he entendido mal? – user1160760