[R-br] Criação de uma função complexa com dplyr
Alexandre Dos Santos
alexandre.santos em cas.ifmt.edu.br
Ter Jun 28 08:49:13 -03 2022
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/
--
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20220628/809dbfa4/attachment.htm>
Mais detalhes sobre a lista de discussão R-br