Lo he mirado mucho para una respuesta a esta pregunta, pero no puedo encontrar una respuesta que satisfaga mis necesidades o mi comprensión de la R.

Primero, aquí está el código para dar sólo una idea de lo que mi conjunto de datos se parece a

df <- data.frame("Year" = 1991:2000, "Subdiv" = 24:28, H1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
             H2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6))             
> df
   Year Subdiv     H1    H2
1  1991     24  31.20  53.9
2  1992     25  34.00 121.5
3  1993     26  70.20  16.9
4  1994     27  19.80  11.9
5  1995     28 433.70 114.6
6  1996     24 126.34 129.9
7  1997     25 178.39 221.1
8  1998     26  30.40 433.4
9  1999     27  56.90 319.2
10 2000     28 818.30  52.6

Así que lo que tenemos aquí es un conjunto de datos que contiene abundancia de arenque de diferentes edades en diferentes áreas («Subdiv») a lo largo del tiempo. H1 representa el arenque a la edad de 1. Mi verdadero conjunto de datos contiene más edad, así como las zonas más (y otras especies de peces).

Lo que me gustaría hacer es combinar la abundancia de diferentes edades en una sola columna, manteniendo los datos conectados (Año, Subdiv) así como la creación de una nueva columna para la Edad.
Así:

       Year Subdiv   Abun   Age
    1  1991     24  31.20    1
    2  1992     25  34.00    1
    3  1993     26  70.20    1
    4  1994     27  19.80    1
    5  1995     28 433.70    1 
    6  1991     24   53.9    2
    7  1992     25  121.5    2
    8  1993     26   16.9    2
    9  1994     27   11.9    2
   10  1995     28  114.6    2

Nota: Sí, he quitado algunas filas, pero no para multitud de la pantalla

Espero que esto sea suficiente de información para lo cual es comprensible lo que necesito y a quien ayudar.

Desde que tengo más especies de peces, si alguien quisiera incluir una descripción de la adición de una Especie de columna así, que sería de gran ayuda.
Aquí está el código para los mismos datos, sólo duplicado para el espadín (Sn):

df <- data.frame("Year" = 1991:2000, "Subdiv" = 24:28, H1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
                 H2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6),
                 S1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
                 S2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6)) 

Saludos!

No creo que las etiquetas de esta pregunta debe estar relacionada, pero si usted no encuentra las etiquetas adecuado para mi pregunta, ir y la cabeza de un cambio.

  • Con respecto a las etiquetas, dataframes no es la etiqueta adecuada para su uso con r. El uso de de datos.marco en su lugar.
InformationsquelleAutor balconydoor | 2013-11-06

2 Comentarios

  1. 7

    Este es un típico remodelar, a continuación, suplemento de la tarea, de modo que usted puede:

    1) ‘Derretir’ sus datos con reshape2

    library("reshape2")
    df.m<-melt(df,id.vars=c("Year","Subdiv"))

    2), a Continuación, agregar columnas adicionales basados en la variable de la columna que sostiene su anterior df nombres de columna

    library("stringr")
    df.m$Fish<-str_extract(df.m$variable,"[A-Z]")
    df.m$Age<-str_extract(df.m$variable,"[0-9]")

    Recomiendo buscar el remodelar funciones como estos son muy comúnmente se requiere de aprendizaje y ellos le ahorrará un montón de tiempo en el futuro
    http://www.statmethods.net/management/reshape.html

    • Gracias hombre! Que lo solucionó sin problemas. Voy a estar seguro para comprobar reshape2 a cabo. Gracias de nuevo!
  2. 6

    Creo que el basic data.frame función va a hacer exactamente lo que usted desea. Intente algo como:

    data.frame(df$Year,df$Subdiv,Abun=c(df$H1,df$H2),
      Age=rep(c(1,2),each=nrow(df)))

    Así que yo soy la concatenación de los valores que desee en la abundancia de la columna, y la creación de una nueva columna que es sólo la edad replicados para cada fila. Usted puede crear una especie similar de la columna fácilmente.

    Espero que ayude!

    • Vale la pena señalar que si usted tenía un montón de peces y un montón de edad, podría ser difícil de manejar, con este método, pero es una solución viable en una pequeña muestra conocida.

Dejar respuesta

Please enter your comment!
Please enter your name here