Problemas com a função subset
2 participantes
Página 1 de 1
Problemas com a função subset
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á.
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
Re: Problemas com a função subset
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!
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!
Re: Problemas com a função subset
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.
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
Re: Problemas com a função subset
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.
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
Re: Problemas com a função subset
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:
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).
Re: Problemas com a função subset
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.
Muito obrigado.
pebarbosa- Mensagens : 13
Data de inscrição : 08/04/2020
Tópicos semelhantes
» Problemas com a função Help
» Problemas com a Minha Primeira Função no R!
» Problemas com o gráfico da função média e desvio
» Solução para problemas com a função LeveneTest
» Problemas ao ler dados em CSV
» Problemas com a Minha Primeira Função no R!
» Problemas com o gráfico da função média e desvio
» Solução para problemas com a função LeveneTest
» Problemas ao ler dados em CSV
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|