Estoy luchando con la transformación de un conjunto de datos de panel de formato ancho a largo. El conjunto de datos se ve así:Reformar formato ancho de datos de panel a formato largo
ID | KP1_430a | KP1_430b | KP1_430c | KP2_430a | KP2_430b | KP2_430c | KP1_1500a | ...
1 ....
2 ....
KP1; KP2 hasta KP7 describe las olas. a, b hasta f describe un artículo específico. (Por ejemplo, de izquierda a derecha, colocación del Partido a)
Me gustaría tener estos datos en formato largo. De esta manera:
ID | Party | Wave | 430 | 1500
1 1 1 .. ..
1 2 1 .. ..
. . .
1 1 2 .. ..
. . .
2 1 1 .. ..
He intentado utilizar la función de remodelación. Pero tuve problemas para remodelarlo con el tiempo y sobre las partes simultáneamente.
Aquí hay un pequeño ejemplo de data.frame.
data <- data.frame(matrix(rnorm(10),2,10))
data[,1] <- 1:2
names(data) <- c("ID","KP1_430a" , "KP1_430b" , "KP1_430c" , "KP2_430a" , "KP2_430b ", "KP2_430c ", "KP1_1500a" ,"KP1_1500b", "KP1_1500c")
Y esto es lo lejos que conseguí.
data_long <- reshape(data,varying=list(names(data)[2:4],names(data)[5:7], names(data[8:10]),
v.names=c("KP1_430","KP2_430","KP1_1500"),
direction="long", timevar="Party")
La pregunta sigue siendo: ¿cómo puedo obtener las variables variables en tiempo en formato largo también? ¿Y hay una forma más elegante de remodelar esta información? En el código anterior, tendría que ingresar los nombres (nombres (datos) [2: 4]) para cada onda y variable. Con este pequeño data.frame está bien, pero el Dataset es mucho más grande.
EDITAR: Cómo se puede hacer esta transformación a mano: De hecho, he hecho esto, lo que me deja con un archivo de código de una página.
Primero, enlazar KP1_430a y KP1_1500a con IDs, Tiempo = 1 y Partido = 1 columna sabio. Segundo, crea el mismo objeto para todas las partes [b-f], cambiando el índice de la parte respectivamente, y añádelo en fila. Realice los pasos uno y dos para el resto de las ondas [2-7], respectivamente, cambiando el partido y la var del tiempo, y añádalos en filas.
Si desea columnas separadas para 430 y 1500 en el formato largo, entonces debe haber una cantidad igual de datos de esas condiciones en el ancho. De la forma en que lo tienes, tendrías muchas NA en la columna de 1500 ... ¿o lo querías de esa manera? – John
Oh, esto probablemente sea un poco incompleto. Hay la misma cantidad de ondas (1-7) y elementos de fiesta (a-f) para estas dos variables. Entonces: KP [1-7] _430 [a-f], KP [1-7] _1500 [a-f]. – lstoetze
Sin embargo, para algunas variables en el conjunto de datos, hay (a) solo datos para algunas ondas, p. Ej. KP [146] _1640 [a-f] o (b) no es específico de una parte, p. KP [1-7] _1490. – lstoetze