Programa R para Biologia da Conservação
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Problemas com a função subset

2 participantes

Ir para baixo

Problemas com a função subset Empty Problemas com a função subset

Mensagem por pebarbosa Seg maio 04, 2020 4:06 pm

Olá pessoal. Espero que estejam todos bem em tempos de Covid.
Estou com uma dúvida que me parece boba, mas não consegui resolver de jeito nenhum. Vou tentar explicar da melhor maneira possível o problema. Trabalho com emissão de gases em rios e lagos amazônicos. Eu tenho uma tabela com todas as minhas variáveis e meus pontos amostrais. Além dos pontos amostrais também tenho dois diferentes sites de coleta. Tudo incluído nessa grande tabela. Como coletei em diferentes habitats da do lago (água aberta, floresta alagada e macrófitas), muitas vezes preciso fazer análises dentro de um dos habitats ou entre um ou alguns deles. Para isso, eu escolhi fazer subsets da planilha grande, onde crio uma nova data.frame com o subset. Algo muito estranho tem acontecido quando uso a função subset. Cada hora de coleta, eu tenho 4 linhas na tabela, referentes a 4 medidas de fluxo diferentes. Nem sempre 4 medidas foram feitas, então coloco NA onde não houve medida. Faço isso para que a tabela fique "homogênea". O que esta acontecendo é que, quando uso o subset, a tabela nova esta vindo apenas com 2 das 4 linhas. Independente se há medida ou não nas outras duas linhas, somente duas linhas aparecem. Eu nem sei baseado em que ele escolhe quais duas linhas vão para a tabela. Eu só percebi pq quando dei um summary na tabela nova vi que meu n amostral era metade do da tabela original para aquele habitat. Ja procurei na internet e tudo mais, mas não consigo entender o pq. É uma função tão simples. Não sei o que está acontecendo. Alguém teria alguma ideia? Coloquei abaixo como a função foi utilizada por mim:

VEG<-subset (bubble_trap, habitat==c("macrop", "fforest)

onde VEG é meu data.frame novo, bubble_trap é minha planilha original e os habitats "macrop"e "fforest" são os dois habitats que quero que sejam incluídos nessa data/frame VEG.

Agradeço desde já.

pebarbosa

Mensagens : 13
Data de inscrição : 08/04/2020

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por Prof. Marcos Seg maio 11, 2020 9:34 am

Hum, o comportamento é meio estranho mesmo... Desconfio que a subset() esteja removendo as linhas que contém NAs em qualquer valor, será que é isso?

Se achar que sim, experimente adicionar um na.rm=F como um argumento de subset(). Pode ser que ele esteja executando a função com ele =T, e mudar pra F resolva.

Vamos nos falando!
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por pebarbosa Seg maio 11, 2020 9:49 am

Beleza Marcos,
vou tentar adicionar o argumento na.rm=F. Tenho mais alguns testes pra fazer hoje e assim que fizer te dou a resposta ok? Agradeço desde já pelo força.

pebarbosa

Mensagens : 13
Data de inscrição : 08/04/2020

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por pebarbosa Seg Jun 01, 2020 5:55 pm

Ola Marcos. Desculpe por trazer de volta esse assunto depois de já algum tempo. Mas hoje tentei novamente usar a função subset e, mesmo incluindo o argumento na.rm=F ainda tive o mesmo problema. Parece que o problema é quando uso o argumento concatenar (c) para incluir na minha nova data.frame mais de uma classe. Quando faço a função subset e ela só inclui uma classe não tenho problemas, mas quando uso por exemplo:

reservoirs<- subset(data, series==c("RO1", "RO2", "RO3")

o problema aparece. Realmente não sei o que pode ser.

pebarbosa

Mensagens : 13
Data de inscrição : 08/04/2020

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por Prof. Marcos Ter Jun 02, 2020 8:43 am

Oi de novo!

Então, quebrei um pouco a cabeça, mas no fim voltei a trás e comecei do zero, e consegui resolver. A seleção de múltiplos fatores na subset() não dá certo com o concatenar! Ela na verdade funciona com o uso de operadores do tipo "E" e "OU", o que no R é reconhecido como "&" e "|", respectivamente.

No seu caso, você quer que ele selecione todas as linhas que tem um nível OU outro nível, etc. Veja o exemplo, acho que vai resolver de forma fácil para o que você precisa:

Código:


#Dados de exemplo:
dados<-structure(list(Classe = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"), Medida1 = c(17L, 13L, NA, 20L, 20L, 17L, 15L, 17L, 15L, 11L, 10L, 15L, 18L, 16L, 14L, 18L, 12L, NA, 17L, 18L), Medida2 = c(40L, 32L, 39L, 47L, 42L, 44L, 37L, 50L, NA, 46L, 30L, 43L, 32L, 35L, 38L, NA, 30L, 36L, 46L, 41L)), class = "data.frame", row.names = c(NA, -20L))


summary(dados)

#Veja os dados completos para visualizar os NAs:
dados

#Agora vamos verificar um subset simples:

subset(dados, dados$Classe=="A")

#Até aqui deu certo. Vamos ver se o mesmo acontece quando usarmos duas classes:

subset(dados, dados$Classe==c("A", "B"))

#E aqui deu errado!
#Ele pegou apenas 3 de cada.

subset(dados, dados$Classe=="A" | dados$Classe=="B")

#Aqui deu certo!!!
#O símbolo "|" funciona como OR (ou).
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por pebarbosa Ter Jun 02, 2020 11:37 am

Poxa Marcos muito obrigado. Faz todo sentido. Legal que vc conseguiu resolver. Agradeço mesmo a força. Preciso com certa frequência desta função então, para mim, será uma mão na roda.
Muito obrigado.

pebarbosa

Mensagens : 13
Data de inscrição : 08/04/2020

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por Prof. Marcos Sex Jun 05, 2020 4:57 pm

Fantástico, que bom que vai ser útil! Very Happy
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Problemas com a função subset Empty Re: Problemas com a função subset

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos