[R-br] Dúvida reestruturar variáveis.

Cid Póvoas cidedson em gmail.com
Qua Fev 16 09:34:22 -03 2022


library(dplyr)
x01<-c(1001,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
x02<-c(2000,"Potássio",4.18,4.21,4.15,4.86,4.36,3)
x03<-c(1002,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
x04<-c(1003,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
x05<-c(2001,"Potássio",4.18,4.21,4.15,4.86,4.36,3)
x06<-c(2000,"Albumina",2.35,2.36,2.21,2.15,2.27,10)
x07<-c(3000,"Albumina",2.69,2.78,2.88,2.91,2.84,12)
x08<-c(2001,"Albumina",2.35,2.36,2.21,2.15,2.27,10)
x09<-c(3001,"Albumina",2.69,2.78,2.88,2.91,2.84,12)

exemplo<-data.frame(rbind(x01,x02,x03,x04,x05,x06,x07,x08,x09))
names(exemplo)<-c("CodCli","Substância","v1","v2","v3","v4","v5","Cluster")
row.names(exemplo)<-NULL

exemplo<-exemplo %>%

mutate(v1=as.numeric(v1),v2=as.numeric(v2),v3=as.numeric(v3),v4=as.numeric(v4),
         v5=as.numeric(v5))

exemplo$Média<-rowMeans(exemplo[,3:7],na.rm = TRUE)

exemplo %>% pivot_longer(cols = 3:7) %>%
  group_by(Cluster, Substância, Média) %>%
  select(-value) %>%
  pivot_wider(names_from = name, values_from = CodCli) %>%
  as.data.frame() %>% pivot_longer(cols=-c(1:3)) %>% as.data.frame() %>%
select(-name) %>%
  separate(value, c("x","CodCli.1","CodCli.2","CodCli.3")) %>% select(-x)
%>%
  unique() %>% as.data.frame() %>% arrange(Substância)



Vê se isso ajuda...

*Cid Edson Mendonça Póvoas*

*AnovAgro <http://www.anovagro.com/>*
*Engenheiro Agrônomo - **Data Scientist*
*CREA : 051984991-4*
*Técnico em Segurança do Trabalho *
*Nº: **0012669/BA*
*Tel: +55 73 99151-9565*
*Lattes : *http://lattes.cnpq.br/2303498368142537
*LinkedIn :* http://br.linkedin.com/in/cidedson/
*Whatsapp :* https://wa.me/5573991519565


Em qua., 16 de fev. de 2022 às 08:47, Diogo Jerônimo por (R-br) <
r-br em listas.c3sl.ufpr.br> escreveu:

> Prezados, bom dia de novo, lá vou perturbar os amigos... Segue outro
> exemplo reproduzível (tem a ver com minha dúvida de ontem):
>
> library(dplyr)
> x01<-c(1001,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
> x02<-c(2000,"Potássio",4.18,4.21,4.15,4.86,4.36,3)
> x03<-c(1002,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
> x04<-c(1003,"Potássio",3.49,3.62,3.63,3.49,3.44,2)
> x05<-c(2001,"Potássio",4.18,4.21,4.15,4.86,4.36,3)
> x06<-c(2000,"Albumina",2.35,2.36,2.21,2.15,2.27,10)
> x07<-c(3000,"Albumina",2.69,2.78,2.88,2.91,2.84,12)
> x08<-c(2001,"Albumina",2.35,2.36,2.21,2.15,2.27,10)
> x09<-c(3001,"Albumina",2.69,2.78,2.88,2.91,2.84,12)
>
> exemplo<-data.frame(rbind(x01,x02,x03,x04,x05,x06,x07,x08,x09))
> names(exemplo)<-c("CodCli","Substância","v1","v2","v3","v4","v5","Cluster")
> row.names(exemplo)<-NULL
>
> exemplo<-exemplo %>%
>
> mutate(v1=as.numeric(v1),v2=as.numeric(v2),v3=as.numeric(v3),v4=as.numeric(v4),
>        v5=as.numeric(v5))
>
> exemplo$Média<-rowMeans(exemplo[,3:7],na.rm = TRUE)
>
> Como o de ontem, esse banco tem variáveis que identificam o código do
> cliente, a média dos dados (iguais entre laboratórios) e o Cluster, que foi
> obtido previamente. A substância é detalhe adicional.
>
> O que eu gostaria é: reestruturar esse banco, colocando como variáveis de
> identificação a substância, o cluster e a média, e o código do cliente indo
> para as colunas, como está nessa tabela abaixo:
>
> *Subst       Cluster    Média       CodCli.1   CodCli.2   CodCli.3*
> Albumina 10 2,2680 2000 2001
> Albumina 12 2,8200    3000 3001
> Potássio 2 3,5340 1001 1002 1003
> Potássio 3 4,3520 2000 2001
>
> Eu tentei usar o comando reshape, com esse código abaixo, mas ele não
> funcionou comigo (tentei também o spread, do tidyr):
>
> exemplo<-exemplo %>%
>   select(CodCli,Substância,Cluster,Média)
>
> exemplo_quebra<-reshape(exemplo,
>                                         direction="wide",
>
> idvar=c("Substância","Cluster","Média"),
>                                         timevar="Cod.Cli")
>
> Algum amigo poderia indicar onde estou errando? Ou se teria uma rotina
> melhor para realizar esse procedimento?
>
> Novamente obrigado!!!
>
> *Diogo Jerônimo*
> *Bacharel em Ciências Estatísticas - ENCE/IBGE*
> *Mestre em Metrologia - PUC-Rio/PósMQI*
> *http://lattes.cnpq.br/8996149312896520
> <http://lattes.cnpq.br/8996149312896520>*
> _______________________________________________
> 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/20220216/47effae9/attachment.htm>


Mais detalhes sobre a lista de discussão R-br