[R-br] Digest R-br, volume 137, assunto 6
Alexandre Dos Santos
alexandre.santos em cas.ifmt.edu.br
Seg Jul 4 22:17:00 -03 2022
Obrigado pela resposta Cesar,
Então o maior entrave é a dificultade com a sintaxe e vou tentar trazer o
resultado para o mais próximo que eu consigo:
library(dplyr)
library(tidyr)
my.ds <- read.csv("
https://raw.githubusercontent.com/Leprechault/trash/main/test_ants.csv")
my.ds$ClassType <- cut(my.ds$AT,breaks=c(-Inf,1,2.9,8.9,24.9,49.9,Inf),
right=FALSE,labels=c("Class_0_1","Class_1_3","Class_3_9",
"Class_9_25","Class_25_50","Class_50"))
if (my.ds$nest<1000 & my.ds$ClassType!="Class_0_1") { #1) Se nest for <
1000 - considerando "Class_1_3" para "Class_50"
counts <- my.ds%>%group_by(nest)%>%summarize(N=length(unique(ClassType)))
my.ds.3 <- my.ds%>%group_by(nest)%>%dplyr::summarize(ClassType=ClassType,
max_AT=max(AT))
my.ds.3$class_max<- as.numeric(gsub('Class_[^_]*[^_]_', '', my.ds.3$
ClassType)) # Extrai o maior valor da classe
if(counts$N>1 | my.ds.3$max_AT>my.ds.3$class_max){ #ClassType não mudar por
nest durante o tempo ou AT entrar e não sair da classe
nests <- unique(rbind(counts$nest,my.ds.3$nest))
my.ds.2 <- my.ds[my.ds$nest %in% nests,]
my.ds.2$velocity <- c(0,diff(my.ds.2$AT))/c(0,diff(my.ds.2$days)) #
Procurando o último ClassType antes de AT e calcula a `velocity` entre o
último ClassType e o atual ClassType para nest
my.ds.2 <- %>%
group_by(nest,ClassType)%>%
summarize(velocity=mean(velocity)) %>%
complete(ClassType, tidyr:fill = list(velocity = NA)) %>%
fill(velocity, .direction = "downup") # Se atrasar qualquer ClassType em
"Class_1_3" para "Class_50" em uma classe maior que o valor de AT no tempo
0, a classe não presente é o valor de velocity do último ClassType
}
} else { #Se o ninho for >= 1000 - apenas considerando "Class_0_1"
my.ds$velocity <- c(0,diff(my.ds$AT))/c(0,diff(my.ds$days))
}
Em qua., 29 de jun. de 2022 às 11:00, <r-br-request em listas.c3sl.ufpr.br>
escreveu:
> Enviar submissões para a lista de discussão R-br para
> r-br em listas.c3sl.ufpr.br
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
> r-br-request em listas.c3sl.ufpr.br
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
> r-br-owner em listas.c3sl.ufpr.br
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of R-br digest..."
>
>
> Tópicos de Hoje:
>
> 1. Re: Criação de uma função complexa com dplyr (Cesar Rabak)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 28 Jun 2022 17:52:46 -0300
> From: Cesar Rabak <cesar.rabak em gmail.com>
> To: a lista Brasileira oficial de discussão do programa R.
> <r-br em listas.c3sl.ufpr.br>
> Subject: Re: [R-br] Criação de uma função complexa com dplyr
> Message-ID:
> <
> CAKrF98n75bODbfyc0O5wBg9VOn2PFx+HHExqUDkvJSOoHs6YAA em mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> A sua descrição está difícil de acompanhar porque é colocado entremeado nas
> regras termos que necessitam melhor definição para entendê-las:
>
>
> - considerando "Class_1_3" para "Class_50" ;
> - ClassType não mudar por nest durante o tempo ;
> - AT entrar mas não sair do ClassType ;
> - o último ClassType antes de AT ;
> - último ClassType e o atual ClassType para nest ;
> - Se atrasar qualquer ClassType em ;
> - "Class_1_3" para "Class_50" ;
> - valor de AT no tempo 0 ;
> - classe não presente ;
> - último ClassType para nest ;
>
> Ademais, parece que sua formulação de velocidade e mesmo a saída desejável
> indica, que existam velocidades diferentes para o mesmo nest e classe.
>
> Por certo esses termos todos acima devem fazer todo o sentido para vc mas
> para podermos ajudá-lo, essas definições devem ser quebradas nas operações
> que elas implicam, aí naturalmente convergir-se-á para a formulação final
> desejada.
>
> Por exemplo, se ClassType implica em ordem, então necessita-se de listas
> ordenadas dessas classe por nest?
>
> Parece que a formulação para o cálculo de velocidade é mais simples quando
> Se AT for >= 50 && Se o ninho for >= 1000 -> a velocidade é
> c(0,diff(AT))/
> c(0,diff(days)) por days para cada nest, Que se entendida corretamente sua
> explicação, significa que apenas as linhas que tenham classe "Class_0_1",
> seriam usadas para esses cálculos.
>
> Não entendo porque é catenado um zero no num e dem dos cálculos de
> velocidade . . .
>
> Supondo as condições para esse cálculo para classe e ninho, você consegue
> escrever essa spec na linguagem R ou tem problemas com a sintaxe para
> produzir o resultado?
>
> HTH
>
>
> On Tue, Jun 28, 2022 at 8:49 AM Alexandre Dos Santos por (R-br) <
> r-br em listas.c3sl.ufpr.br> wrote:
>
> > Prezados Membros do R-br,
> >
> > Meu dados de exemplo são:
> >
> > library(dplyr)
> >
> > my.ds <- read.csv("
> > https://raw.githubusercontent.com/Leprechault/trash/main/test_ants.csv")
> >
> > my.ds
> >
> > # days nest AT
> >
> > # 1 0 2 10.9200
> >
> > # 2 47 2 22.8600
> >
> > # 3 76 2 23.2400
> >
> > # 4 0 3 0.1400
> >
> > # 5 47 3 0.4800
> >
> > # 6 76 3 0.8300
> >
> > # 7 118 3 0.8300
> >
> > # 8 160 3 0.9400
> >
> > # 9 193 3 0.9400
> >
> > # 10 227 3 0.9400
> >
> > # 11 262 3 0.9400
> >
> > # 12 306 3 0.9400
> >
> > # 13 355 3 11.9300
> >
> > # 14 396 3 12.8100
> >
> > # 15 450 3 29.3600
> >
> > # 16 0 4 1.0000
> >
> > # 17 76 4 1.5600
> >
> > # 18 160 4 2.8800
> >
> > # 19 193 4 2.8800
> >
> > # 20 227 4 2.8800
> >
> > # 21 262 4 2.8800
> >
> > # 22 306 4 2.8800
> >
> > # 23 355 4 17.0500
> >
> > # 24 0 7 11.7100
> >
> > # 25 47 7 24.7900
> >
> > # 26 76 7 33.1200
> >
> > # 27 0 10 4.1400
> >
> > # 28 47 10 6.3000
> >
> > # 29 76 10 13.9400
> >
> > # 30 118 10 13.3000
> >
> > # 31 160 10 29.4200
> >
> > # 32 193 10 29.6000
> >
> > # 33 227 10 45.1500
> >
> > # 34 262 10 45.1500
> >
> > # 35 306 10 45.1500
> >
> > # 36 355 10 70.5300
> >
> > # 37 396 10 109.2600
> >
> > # 38 450 10 149.2000
> >
> > # 39 0 1066 0.0289
> >
> > # 40 29 1066 0.0870
> >
> > # 41 70 1066 0.1254
> >
> > # 42 112 1066 0.1254
> >
> > # 43 146 1066 0.1254
> >
> > # 44 180 1066 0.1254
> >
> > # 45 215 1066 0.1350
> >
> > # 46 259 1066 0.1350
> >
> > # 47 0 1067 0.0520
> >
> > # 48 29 1067 0.1254
> >
> > # 49 70 1067 0.1440
> >
> > # 50 112 1067 0.2160
> >
> > # 51 146 1067 0.2538
> >
> > # 52 180 1067 0.2538
> >
> > # 53 215 1067 0.9600
> >
> > # 54 259 1067 0.9600
> >
> > # 55 349 1067 0.9600
> >
> > # Class size
> >
> > my.ds$ClassType <- cut(my.ds$AT,breaks=c(-Inf,1,2.9,8.9,24.9,49.9,Inf),
> > right=FALSE,
> >
> > labels=c("Class_0_1","Class_1_3","Class_3_9",
> > "Class_9_25","Class_25_50","Class_50"))
> >
> >
> > Eu gostaria de calular a variável velocity com as seguintes regras:
> >
> > Se nest for < 1000 - considerando "Class_1_3" para "Class_50"
> >
> > 1.1) Se AT for < 50
> >
> > 1.1.1) Se ClassType não mudar por nest durante o tempo ou AT entrar mas
> > não sair do ClassType, então não calcule velocity (no meu caso nest 2 e 7
> > ).,
> >
> > 1.1.2) Procurando o último ClassType antes de AT e calcula a `velocity`
> > entre o último ClassType e o atual ClassType para nest
> >
> > 1.1.3) Se atrasar qualquer ClassType em "Class_1_3" para "Class_50" em
> uma
> > classe maior que o valor de AT no tempo 0, a classe não presente é o
> valor
> > de velocity do último ClassType para nest.
> > 1.2) Se AT for >= 50
> >
> > 1.2.1) velocity é c(0,diff(AT))/c(0,diff(days)) por days para cada nest
> > Se o ninho for >= 1000 - apenas considerando "Class_0_1"
> >
> > 2.1) a velocidade é c(0,diff(AT))/c(0,diff(days)) por days para cada nest
> > também.
> >
> > Meu output desejável é:
> >
> > # nest ClassType velocity
> >
> > # 3 Classe_ 1_3 0,224285714
> >
> > # 3 Classe_ 3_9 0,224285714
> >
> > # 3 Classe_ 9_25 0,224285714
> >
> > # 3 Classe_ 9_25 0,021463415
> >
> > # 3 Classe_ 9_25 0,306481481
> >
> > # 4 Classe_ 1_3 0,0075
> >
> > # 4 Classe_ 1_3 0,015714286
> >
> > # 4 Classe_ 1_3 0
> >
> > # 4 Classe_ 1_3 0
> >
> > # 4 Classe_ 1_3 0
> >
> > # 4 Classe_ 1_3 0
> >
> > # 4 Classe_ 1_3 0,289183673
> >
> > # 4 Classe_ 3_9 0,289183673
> >
> > # 10 Classe_9_25 0,263448276
> >
> > # 10 Classe_9_25 -0,015238095
> >
> > # 10 Classe_9_25 0,383809524
> >
> > # 10 Class_25_50 0,383809524
> >
> > # 10 Classe_25_50 0,005454545
> >
> > # 10 Class_25_50 0,457352941
> >
> > # 10 Classe_25_50 0
> >
> > # 10 Classe_25_50 0
> >
> > # 10 Class_25_50 0,517959184
> >
> > # 10 Class_50 0,517959184
> >
> > # 10 Class_50 0,944634146
> >
> > # 10 Class_50 0,73962963
> >
> > # 1066 Classe_0_1 0,002003448
> >
> > # 1066 Classe_0_1 0,000936585
> >
> > # 1066 Classe_0_1 0
> >
> > # 1066 Classe_0_1 0
> >
> > # 1066 Classe_0_1 0
> >
> > # 1066 Classe_0_1 0,000274286
> >
> > # 1066 Classe_0_1 0
> >
> > # 1067 Classe_0_1 0,002531034
> >
> > # 1067 Classe_0_1 0,000453659
> >
> > # 1067 Classe_0_1 0,001714286
> >
> > # 1067 Classe_0_1 0,001111765
> >
> > # 1067 Classe_0_1 0
> >
> > # 1067 Classe_0_1 0.020177143
> >
> > # 1067 Classe_0_1 0
> >
> > # 1067 Classe_0_1 0
> >
> > Por favor, alguém poderia me ajudar com isso?
> >
> >
> >
> > --
> >
> > --
> > Alexandre dos Santos
> > Geotechnologies and Spatial Statistics applied to Forest Entomology
> > Instituto Federal de Mato Grosso (IFMT) - Campus Caceres
> > Caixa Postal 244 (PO Box)
> > Avenida dos Ramires, s/n - Vila Real
> > Caceres - MT - CEP 78201-380 (ZIP code)
> > Phone: (+55) 65 99686-6970 / (+55) 65 3221-2674
> > Lattes CV: http://lattes.cnpq.br/1360403201088680
> > OrcID: orcid.org/0000-0001-8232-6722
> > ResearchGate: www.researchgate.net/profile/Alexandre_Santos10
> > Publons: https://publons.com/researcher/3085587/alexandre-dos-santos/
> > --
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> > código mínimo reproduzível.
> >
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20220628/7cd50a50/attachment-0001.htm
> >
>
> ------------------------------
>
> Subject: Legenda do Digest
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>
> ------------------------------
>
> Fim da Digest R-br, volume 137, assunto 6
> *****************************************
>
--
--
Alexandre dos Santos
Geotechnologies and Spatial Statistics applied to Forest Entomology
Instituto Federal de Mato Grosso (IFMT) - Campus Caceres
Caixa Postal 244 (PO Box)
Avenida dos Ramires, s/n - Vila Real
Caceres - MT - CEP 78201-380 (ZIP code)
Phone: (+55) 65 99686-6970 / (+55) 65 3221-2674
Lattes CV: http://lattes.cnpq.br/1360403201088680
OrcID: orcid.org/0000-0001-8232-6722
ResearchGate: www.researchgate.net/profile/Alexandre_Santos10
Publons: https://publons.com/researcher/3085587/alexandre-dos-santos/
--
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20220704/abb6aa34/attachment.htm>
Mais detalhes sobre a lista de discussão R-br