Estoy usando la R y la necesidad de seleccionar filas con la edad (la edad de la muerte) menor o igual a laclen (duración de la lactación). Estoy tratando de crear un nuevo marco de datos para incluir sólo las filas/ids cual el valor de la columna’aged’ es menor que su correspondiente ‘laclength de valor.

df:
 id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9922  64551     3       5 
9916  64551     3       8 
9917  64551     3       8 
9914  64551     3       2 

el nuevo marco de datos debe tener este aspecto:

dfnew:
id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9914  64551     3       2

Cualquier ayuda se agradece!

Bazon

  • Por favor, dar más detalles acerca de su necesidad.
  • no consigue en absoluto
  • Hola Karthik, estoy tratando de crear un nuevo marco de datos para incluir sólo las filas/ids cual el valor de la columna’aged’ es menor que el valor de la columna ‘laclength’
InformationsquelleAutor Bazon | 2010-05-18

3 Comentarios

  1. 90
    df[df$aged <= df$laclen, ] 

    Debe hacer el truco. Los corchetes permiten índice basado en una expresión lógica.

    • gracias, aL3xa! Voy a mantener este así. Puedo ver que es muy similar a uno wkmor1 enviado anteriormente.
    • sin detach podría ser peligroso… Y creo que la coma está fuera de lugar.
    • gracias por las sugerencias! He añadido detach y se coloca coma después del corchete de cierre, así que va como esto: attach(df); newdf <- df[which(aged <= laclen), ]; detach(df)
    • Usted podría también utilizar withnewdf <- df[with(df,which(aged <= laclen)), ] en lugar de attach/detach.
    • Obtengo el error:Error in Ops.factor(value, productcode) : level sets of factors are different, había para establecer los niveles en los campos: stackoverflow.com/questions/24594981/…
    • Esta solución devuelve NA líneas cuando no se cumplen los criterios, el @Jonathan Chang respuesta funcionado mejor para mí

  2. 46

    También puede hacer

    subset(df, aged <= laclen)
    • bueno, hace el código más ordenado según yo, lástima R CMD check no reconoce los campos utilizados en la prueba como legítimo variables. emite una NOTE «no visible de unión para la variable global».
    • subset() tiene algunos problemas serios, ver, por ejemplo, stackoverflow.com/questions/9860090/…

Dejar respuesta

Please enter your comment!
Please enter your name here