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.

Lendo datas no R

3 participantes

Ir para baixo

Lendo datas no R  Empty Lendo datas no R

Mensagem por Prof. Marcos Sex Jan 15, 2016 5:38 pm

Oi, pessoal!

Em um https://programa-r.forumeiros.com/t11-duvida-basica, a Renata perguntou sobre como ler datas e horas no R (e no webnário, acho que a Giovanna perguntou sobre as datas também).
Estou aqui respondendo a primeira parte, ok? Wink Depois crio um tópico sobre leitura de horários.

Vamos começar com um conjuntinho simples de dados. Copiem e colem no R:

Código:

datas<-structure(list(data1 = structure(c(4L, 3L, 1L, 2L), .Label = c("06-11-2011",
"18-09-1983", "24-12-2007", "26-06-1981"), class = "factor"),
    data2 = structure(c(4L, 3L, 1L, 2L), .Label = c("06/11/2011",
    "18/09/1983", "24/12/2007", "26/06/1981"), class = "factor"),
    data3 = structure(c(1L, 3L, 4L, 2L), .Label = c("1981-06-26",
    "1983-09-18", "2007-12-24", "2011-11-06"), class = "factor"),
    data4 = structure(c(4L, 3L, 1L, 2L), .Label = c("06/11/11",
    "18/09/83", "24/12/07", "26/06/81"), class = "factor")), .Names = c("data1",
"data2", "data3", "data4"), class = "data.frame", row.names = c(NA, -4L))

datas

summary(datas)


Não se preocupem com a parte grande do código, ela serve apenas para criar os dados, para não precisarmos de um arquivo.

Note que o R leu tudo certinho, mas em nenhuma das colunas ele identificou os dados como datas corretamente. Eu sei disso porque no summary ele deveria identificar os valores mínimos, máximos e etc, como em qualquer variável quantitativa. Ao invés disso, ele leu como variáveis categóricas.

Agora vamos olhar os dados: as quatro colunas mostram as mesmas datas, mas cada uma está em um formato diferente:
data1: dia-mês-ano
data2: dia/mês/ano
data3: ano-mês-dia
data4: dia/mês/ano, mas neste caso o ano está apenas com os dois últimos números

Como o R lida com isso?
Podemos usar uma função chamada as.Date(), que lê a data com a nossa ajuda (a gente precisa informar pra ele o formato) e converte os dados. é bem simples, na verdade! Vamos lá? Começando com a coluna data1:

Código:

datas$data1<-as.Date(datas$data1, "%d-%m-%Y")
summary(datas)

Viu agora como está a data no summary? Ele entendeu que são datas, e agora trata os dados da forma correta. Perceba que no R ele sempre vai mostrar neste formato de ano-mês-dia, certo?

Veja ali dentro da função o que fizemos. Entre aspas dissemos que os nosso dados estão no formato dia-mês-ano. Os sinais "%" são importantes, pois sinalizam onde começa cada pedaço de informação.
Para entender melhor, veja como fica com as duas próximas colunas:

Código:

datas$data2<-as.Date(datas$data2, "%d/%m/%Y")
datas$data3<-as.Date(datas$data3, "%Y-%m-%d")
summary(datas)

Legal, né?

Mas e a última coluna? Deixei ela pro final por um detalhe: repare que o símbolo para ano que usamos nos exemplos acima foi a letra Y (de year), sempre maiúscula. Ela esta maiúscula porque o formato é de ano com os quatro dígitos. Quando o ano tiver apenas dois dígitos, devemos usar o y minúsculo. Assim:

Código:

datas$data4<-as.Date(datas$data4, "%d/%m/%y")
summary(datas)

E pronto! cheers

Pode parecer estranho no começo, mas é bem simples. Vocês podem criar um script de conversão de datas, incluindo vários exemplos de formatos, e abrir pra usar quando for necessário. O bacana disso é que vocês podem continuar colocando as datas no excel no formato que preferirem, e depois no R basta converter ao ler o arquivo.

Em caso de dúvidas, perguntem aqui! Wink
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Sáb Jan 16, 2016 1:25 pm

Ah, entendi! Muito Obrigada Marcos.

Very Happy
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Ter Jan 19, 2016 7:37 am

Bom dia Marcos, poderia ver pra mim a leitura de horas pelo R. Tenho alguns dados de atividade que tenho que agrupar por faixas de horário, entende? Tipo 32 lagartos ativos das 10:00 as 10:59. e dai precisaria que o R entendesse os horários. Obrigada
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Ter Jan 19, 2016 12:14 pm

Renata Cardoso Vieira escreveu:Bom dia Marcos, poderia ver pra mim a leitura de horas pelo R. Tenho alguns dados de atividade que tenho que agrupar por faixas de horário, entende? Tipo 32 lagartos ativos das 10:00 as 10:59. e dai precisaria que o R entendesse os horários. Obrigada

Oi, Renata!

Então, andei olhando um pouco o funcionamento do uso de horas no R, e me pareceu mais complexo do que as datas. Normalmente as horas são inseridas junto com datas, em uma mesma coluna: algo como ter uma célula mostrando "26/06/1981 20:30" por exemplo.

Eu ainda não entendi se ele lê as horas como coisas independentes, no formato tradicional de hora:minutos. Mas imagino que uma solução simples seria usar o número corrido, sem a pontuação. Então 09:00 seria 900, 11:00 seria 1100, 22:30 seria 2230, por exemplo.
Se o seu objetivo é apenas classificar em intervalos, este formato vai funcionar bem facilmente, pois os intervalos vão ser simples intervalos numéricos. E aí a conversão no excel fica fácil, basta substituir os ':' por nada.

Qualquer coisa podemos montar um exemplo do que você quer fazer. Se for o caso, descreva melhor um pouco dos dados e do que você precisa, assim podemos montar uma planilha de exemplo como eu fiz com o caso das datas.
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Ter Jan 19, 2016 12:15 pm

Vou tentar agora a tarde e dai aviso se funcionou! Obrigada
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Ter Jan 19, 2016 2:30 pm

Oi Marcos,

Em princípio as horas funcionaram dessa forma, mas estou com outra dúvida.

Tenho dados de temperatura e quando mando fazer a média vem a seguinte resposta:

> mean(Tar)
[1] NA
> sd(Tar)
[1] NA
> quantile(Tar, c(0, 0.1, 0.25, 0.5, 0.75, 0.9, 1))
Error in quantile.default(Tar, c(0, 0.1, 0.25, 0.5, 0.75, 0.9, 1)) :
missing values and NaN's not allowed if 'na.rm' is FALSE

Sabe me dizer porque? É por causa dos valores faltantes que estão como NA?
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Ter Jan 19, 2016 8:37 pm

Use o na.rm=T como argumento das funções e veja se funciona.

mean(Tar, na.rm=T)

E por aí vai. Depois avise se funcionou, ok?
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Qua Jan 20, 2016 9:21 am

Bom dia Marcos,

Não funcionou! Dá a seguinte mensagem:

mean(Tar, na.rm = T)
[1] NA
Warning message:
In mean.default(Tar, na.rm = T) :
argumento não é numérico nem lógico: retornando NA
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Qua Jan 20, 2016 9:24 am

Achei o erro, foi um problema de maiúsculas e minúsculas. Resolvido. Obrigada
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Qua Jan 20, 2016 6:28 pm

Renata Cardoso Vieira escreveu:Achei o erro, foi um problema de maiúsculas e minúsculas. Resolvido. Obrigada
Beleza então! Very Happy

Qualquer coisa é só perguntar.
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 9:56 am

Bom dia Marcos,

Estou fazendo um boxplot e não consigo tirar um único dado que não pode ser levado em conta na figura... Porque ele cria um boxplot a mais. Acho que coloquei o na.rm=T do jeito errado, mas não estou conseguindo achar o modo correto. Pode me ajudar?

par(mfrow=c(1,2))
boxplot(Deslocamento~Sexo,na.rm = T, las=1, xlab="Sexo", ylab="Deslocamentos (m)", range=0)
boxplot(Deslocamento~Idade, las=1, xlab="Idade", ylab="Deslocamentos (m)", range=0)

Obrigada,

Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Dom Jan 24, 2016 11:01 am

Oi, Renata!

Como assim cria um a mais? Ele cria uma caixa extra, como uma categoria a mais?

Se for isso, a minha primeira desconfiança é que ao usar o na.rm o R ficou com alguma categoria "vazia" de dados, e aí ele tenta plotar a categoria, mas não tem dados para ela.

Dê um tapply(Deslocamento, Sexo, quantile, na.rm=T)
E um tapply(Deslocamento, Idade, quantile, na.rm=T)

E cole aqui o resultado.

Se quiser, inclua uma imagem do boxplot para mostrar o que há errado, ok?

Abraços
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 11:06 am

Lendo datas no R  A2deon[/img][img]Lendo datas no R  A2deon[/img]
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 11:07 am

Oi Marcos,

Foi isso que aconteceu (a imagem foi duas vezes, sorry)! Na minha variável categorica ele cria uma nova categoria com na que eu não quero que apareça.

Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 11:10 am

Achei o erro, um espaço a mais!!! Very Happy

Já que eu já resolvi esse, posso te perguntar outra coisa.. heheh

Rodei uma regressão linear e tem um único resíduo que tenho que retirar. Como posso retirar?

Obrigada
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Dom Jan 24, 2016 12:07 pm

hahahah, que bom que já resoveu só. Seguimos, então.

Na regressão, você sempre deve salvar o resultado como um objeto, mais ou menos assim:

resultado<-lm(vary~varx)

Neste formato, os resíduos podem ser acessados em:

resultado$residuals

E aí você pode usar os resíduos para o que precisar: inspeção visual, teste de normalidade, ou outras coisas.
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 12:29 pm

Ah bacana.

Fiz o teste de normalidade: shapiro.test(rstudent(resmodelo))
Shapiro-Wilk normality test
data:  rstudent(resmodelo)
W = 0.33184, p-value = 1.321e-10

O gráfico da Regressão ficou assim: Lendo datas no R  <img src=" />

Dai pensei que se eu deveria excluir esse outline e refazer, que tu achas? Como posso fazer isso?

E os resíduos estão assim:

resmodelo$residuals
         1           2           3           4           5           6
-11940.6703  -8733.3463 -11201.1408   8117.5064  -7849.7874  -5734.7874
         7           8           9          10          11          12
-8407.2874  -5227.6696 -11206.1408  -4509.7817  -7642.7817  -7141.8169
        13          14          15          16          17          18
-8989.3463  -9533.4052  -4047.8764  -6029.6114   3451.6537  -5670.4929
        19          20          21          22          23          24
  940.7126  33193.0064   7410.2414 105082.5359   2443.4181 -10493.0230
        25          26          27          28          29          30
 -178.4347  -8423.6114 -10739.5525  14867.0948  -8389.2874 -13416.3175
Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Dom Jan 24, 2016 2:39 pm

O gráfico não apareceu aqui.

De qualquer forma, você pode excluir um outlier qualquer quando usar o comando da regressão, bastando saber a linha a qual ele pertence.

Por exemplo: lm(vary[-5,]~varx[-5,])
Neste caso eu excluí a linha 5 da regressão.

Tem um monte de outras maneiras, mas acho essa uma das mais rápidas e práticas.
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Renata Cardoso Vieira Dom Jan 24, 2016 2:59 pm

Obrigada Marcos,

Funcionou assim: lm(vary[-5]~varx[-5]), sem as vírgulas após o 5.

Renata Cardoso Vieira
Renata Cardoso Vieira

Mensagens : 41
Data de inscrição : 22/12/2015
Idade : 37

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Prof. Marcos Dom Jan 24, 2016 3:03 pm

Ih, verdade! Como estamos nos referindo apenas à variável, então não faz sentido a vírgula. Ela só precisaria ser usada no caso de seleção de todos os dados! Ops!

Que bom que você detectou e corrigiu o erro. Smile
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

Lendo datas no R  Empty Re: Lendo datas no R

Mensagem por Valeria Andrade Dom Abr 15, 2018 2:32 pm

Ola a todos,

Como calculo periodo de tempo por comportamento observado no R. por exemplo, gostaria de saber como fazer o R calcular quantos minutos um individuo foi observado em atividade de acasalamento entre as 12.00 am do dia 17 de dezembro ate as 17.00 do dia 18. Edepois fazer um histograma do periodo de tempo por comportamento em 24 horas, e 36 horas.
alguem pode ajudar

a tabela de dados esta abaixo

Data horario inicial horario final comportamento
06/12/17 03:00 03:00 acasalamento
07/12/18 03:00 04:00 social
07/12/17 04:00 05:00 descanso
07/12/17 05:00 06:00 variado
07/12/18 00:00 01:00 acasalamento
07/12/17 01:00 02:00 social
07/12/17 02:00 02:30 descanso
07/12/18 02:30 03:30 variado
07/12/17 03:30 04:30 acasalamento
07/12/17 04:30 05:30 social
07/12/18 05:30 06:30 descanso
07/12/17 06:30 07:30 variado
07/12/17 07:30 08:30 acasalamento
07/12/18 08:30 09:30 social
07/12/17 09:30 10:30 descanso
07/12/17 10:30 11:30 variado
07/12/18 11:30 12:30 acasalamento
07/12/17 12:30 13:30 social
07/12/17 13:30 14:30 descanso
07/12/18 14:30 15:30 variado
07/12/17 15:30 15:37 acasalamento
07/12/17 15:37 15:45 social
07/12/18 15:45 16:00 descanso
07/12/17 16:00 17:00 variado
07/12/17 17:00 18:00 acasalamento
07/12/18 18:00 19:00 social
07/12/17 19:00 20:00 descanso
07/12/17 20:00 21:00 variado
07/12/18 21:00 22:00 acasalamento
07/12/17 22:00 23:00 social
07/12/17 23:00 23:59 descanso
08/12/17 00:00 01:00 variado
08/12/17 00:00 01:00 acasalamento
08/12/17 01:00 02:00 social
08/12/17 02:00 02:30 descanso
08/12/17 02:30 03:30 variado
08/12/17 03:30 04:30 acasalamento
08/12/17 04:30 05:30 social
08/12/17 05:30 06:30 descanso
08/12/17 06:30 07:30 variado
08/12/17 07:30 08:30 acasalamento
08/12/17 08:30 09:30 social
08/12/17 09:30 10:30 descanso
08/12/17 10:30 11:30 variado
08/12/17 11:30 12:30 acasalamento
08/12/17 12:30 13:30 social
08/12/17 13:30 14:30 descanso
08/12/17 14:30 15:30 variado
08/12/17 15:30 15:37 acasalamento
08/12/17 15:37 15:45 social
08/12/17 15:45 16:00 descanso
08/12/17 16:00 17:00 variado
08/12/17 17:00 18:00 acasalamento
08/12/17 18:00 19:00 social
08/12/17 19:00 20:00 descanso
08/12/17 20:00 21:00 variado
08/12/17 21:00 22:00 acasalamento
08/12/17 22:00 23:00 variado
08/12/17 23:00 23:59 acasalamento
08/12/17 00:00 01:00 social

Obrigada
Valeria

Valeria Andrade

Mensagens : 94
Data de inscrição : 12/03/2018

Ir para o topo Ir para baixo

Lendo datas no R  Empty Re: Lendo datas no R

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