Extraer un subconjunto de una trama de datos en base a una condición que implica un campo

StackOverflow https://stackoverflow.com/questions/3445590

  •  27-09-2019
  •  | 
  •  

Pregunta

Tengo un gran CSV con los resultados de un estudio médico de diferentes lugares (la ubicación es un factor presente en los datos). Como algunos análisis son específicos de un lugar y por conveniencia, me gustaría extraer subtramas con las filas solamente desde esos lugares. Sucede que la ubicación es el primer campo de modo que sí, que podía hacerlo por la clasificación de las filas CSV, pero me gustaría aprender cómo hacerlo en I como estoy seguro de que voy a necesitar esto para otras columnas.

Así, en pocas palabras, la pregunta es:? Foo recibió la trama de datos, ¿cómo puedo crear otra barra de trama de datos que sólo contiene las filas de foo donde foo$location = 'there'

¿Fue útil?

Solución

Éstos son los dos enfoques principales. Yo prefiero éste para su legibilidad:

bar <- subset(foo, location == "there")

Tenga en cuenta que usted puede encadenar muchos condicionales con & y | para crear subconjuntos complejos.

El segundo es el enfoque de indexación. Puede filas de índice en R ya sea con numérico, o rebanadas booleanos. foo$location == "there" devuelve un vector de valores T y F que es la misma longitud que las filas de foo. Esto se puede hacer para devolver sólo filas en las que la condición vuelve verdadera.

foo[foo$location == "there", ]

Otros consejos

Sólo para extender la respuesta anterior también se puede indexar sus columnas en lugar de especificar los nombres de las columnas que también pueden ser útiles dependiendo de lo que está haciendo. Teniendo en cuenta que su ubicación es el primer campo que se vería así:

    bar <- foo[foo[ ,1] == "there", ]

Esto es útil porque se puede realizar operaciones en el valor de la columna, como un bucle sobre columnas específicas (y se puede hacer lo mismo por los números de las filas de indexación también).

Esto también es útil si necesita realizar alguna operación en más de una columna, porque a continuación, puede especificar un rango de columnas:

    foo[foo[ ,c(1:N)], ]

O columnas específicas, como era de esperar.

    foo[foo[ ,c(1,5,9)], ]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top