Estou criando um arquivo para execução em um modelo com contagens de espécies em vários locais diferentes que visitamos várias vezes. No entanto, nem todos os locais foram visitados em todas as visitas.
Preciso de uma coluna para permanecer todos os NA's se não foi visitado, mas deve ter um 0 se foi de um lote que foi visitado, mas a espécie não foi detectada. Abaixo está uma mini amostra dos meus dados no formato em que os tenho atualmente. Então, essencialmente, preciso de uma maneira de converter todos os NA's na coluna p1 e p2 para 0, enquanto mantenho p3 para a 2ª visita todos os NA's. Tenho centenas de colunas em meus dados reais, então preferiria não ter que atribuir manualmente se os NA's devem converter para 0 ou permanecer NA, se possível, coluna por coluna.
## creates example dataframe
library(dplyr)
library(tidyr)
Species<-c("a","b","c","a","d","d","c","a","b","c") # four species
visit<-c(1,1,2,2,1,2,2,1,2,1) #two visits
Site<-c("p1","p1","p1","p1","p2","p2","p2","p3","p2","p2") #three sites
TotalCount<-c(1,3,4,3,5,2,1,3,1,1) $number of individuals captured
df<-data.frame(Species, visit, Site, TotalCount)
df2 <- df %>%
dplyr::select("Species", "Site","TotalCount","visit") %>%
pivot_wider(names_from = Site, values_from = TotalCount,
values_fill = NA)%>%
arrange(visit, Species)
O quadro de dados final do df2 deve ficar assim:
Species visit p1 p2 p3
1 a 1 1 0 3
2 b 1 3 0 0
3 c 1 0 1 0
4 d 1 0 5 0
5 a 2 3 0 NA
6 b 2 0 1 NA
7 c 2 4 1 NA
8 d 2 0 2 NA
Acredito que isso realiza a tarefa usando o pacote hutilscpp
dá
Uma abordagem usando
replace