varias superponer studio modificar lineas histogramas hacer graficos graficas ejes como barras r dataframe reshape rbind

studio - superponer graficas en r



Convertir el marco de datos de N columnas en un marco de datos de dos columnas "apiladas" (1)

Si entiendo correctamente, puede usar unlist y crear manualmente su data.frame :

mydf[] <- lapply(mydf, as.character) # Convert factors to characters final_output <- data.frame(Source = unlist(mydf[-length(mydf)]), Target = unlist(mydf[-1])) head(final_output, 15) # Source Target # varA1 A B # varA2 A B # varA3 A B # varA4 A B # varA5 A B # varA6 A B # varB1 B C # varB2 B C # varB3 B C # varB4 B C # varB5 B C # varB6 B C # varC1 C D # varC2 C D # varC3 C D

Hola comunidad de pila.

Estoy trabajando con análisis de red y tengo una pregunta de reforma de datos.

Mis datos originales aparecen como una serie de columnas en las que cada columna es un par "fuente" y "objetivo". El marco de datos final debe estar compuesto por dos columnas "fuente" y "destino". Tenga en cuenta que estos pares se escalonan a medida que se originan y los destinos se vinculan como en una red dirigida. (Consulte el final_output en el ejemplo de código para la salida deseada)

Creé un método muy hacky para producir el resultado que necesito (vea el código a continuación) pero no admite números diferentes de columnas sin que yo agregue variables y otras cosas. Además, tenga en cuenta que, en algunos casos, el número de pares de columnas será un número impar, es decir, una "fuente" sin "destino" al final del marco de datos. En este caso, la columna "objetivo" faltante se crea con NA.

Siento que hay una manera suave de producir esto sin todo el trabajo manual. He estado buscando y buscando, y no he encontrado nada. Muchas gracias por tu ayuda.

Tim

# Create example DF mydf <- data.frame(id = 1:6, varA = "A", varB = "B", varC = "C", varD = "D", varE = "E", varF = "F") #Remove the ID value for DF build. This variable is not in real DF mydf$id <-NULL #Begin inelegant hack. #Please note: the incoming DF has an indeterminate number of columns that vary with project counter <-ncol(mydf) for (i in 1:counter){ t1 <-mydf[(counter-counter+1):(counter-counter+2)] t2 <-mydf[(counter-counter+2):(counter-counter+3)] t3 <-mydf[(counter-counter+3):(counter-counter+4)] t4 <-mydf[(counter-counter+4):(counter-counter+5)] t5 <-mydf[(counter-counter+5):(counter-counter+6)] } #Rename for the rbind names(t1) <-c("Source", "Target") names(t2) <-c("Source", "Target") names(t3) <-c("Source", "Target") names(t4) <-c("Source", "Target") names(t5) <-c("Source", "Target") #This is the shape I need but the process is super manual and does not accommodate differing numbers of columns. final_output <-rbind(t1,t2,t3,t4,t5)