Extraia um subconjunto de um quadro de dados com base em uma condição envolvendo um campo

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

  •  27-09-2019
  •  | 
  •  

Pergunta

Eu tenho um CSV grande com os resultados de uma pesquisa médica de diferentes locais (o local é um fator presente nos dados). Como algumas análises são específicas para um local e por conveniência, eu gostaria de extrair sub -quadros com as linhas apenas desses locais. Acontece que o local é o primeiro campo, então sim, eu poderia fazê -lo classificando as linhas do CSV, mas gostaria de aprender como fazê -lo em r, pois tenho certeza de que vou precisar disso para outras colunas.

Então, em poucas palavras, a questão é: dado um quadro de dados Foo, como posso criar outra barra de quadro de dados que contém apenas as linhas do Foo onde foo$location = 'there'?

Foi útil?

Solução

Aqui estão as duas principais abordagens. Eu prefiro este para sua legibilidade:

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

Observe que você pode reunir muitos condicionais com & e | para criar subconjuntos complexos.

O segundo é a abordagem de indexação. Você pode indexar linhas em r com fatias numéricas ou booleanas. foo$location == "there" retorna um vetor de T e F valores que são o mesmo comprimento que as linhas de foo. Você pode fazer isso para retornar apenas linhas onde a condição retorna true.

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

Outras dicas

Apenas para estender a resposta acima, você também pode indexar suas colunas, em vez de especificar os nomes das colunas que também podem ser úteis, dependendo do que você está fazendo. Dado que sua localização é o primeiro campo, seria assim:

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

Isso é útil porque você pode executar operações no valor da coluna, como loop em colunas específicas (e você pode fazer o mesmo indexando números de linha).

Isso também é útil se você precisar executar alguma operação em mais de uma coluna, porque você pode especificar uma variedade de colunas:

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

Ou colunas específicas, como seria de esperar.

    foo[foo[ ,c(1,5,9)], ]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top