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

Diogo Jerônimo diogojose21 em yahoo.com.br
Qua Fev 16 10:37:19 -03 2022


Prezado Cid, primeiro obrigado pela atenção!!!
Era exatamente o que eu queria, só não ficou perfeito porque você quadrou com meu exemplo exato (com três códigos), mas podem ter mais de três (não saberia dizer quantos), então terei de ver como ampliar sua solução. Mas era exatamente isso!!!
Muitíssimo obrigado!!! 
Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQIhttp://lattes.cnpq.br/8996149312896520 

    Em quarta-feira, 16 de fevereiro de 2022 09:35:30 BRT, Cid Póvoas <cidedson em gmail.com> escreveu:  
 
 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
Engenheiro Agrônomo - Data Scientist CREA : 051984991-4
Técnico em Segurança do Trabalho 
Nº: 0012669/BATel: +55 73 99151-9565Lattes : http://lattes.cnpq.br/2303498368142537
LinkedIn : http://br.linkedin.com/in/cidedson/Whatsapphttps://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.3Albumina 10 2,2680 2000 2001 Albumina 12 2,8200    3000 3001 Potássio 2 3,5340 1001 1002 1003Potá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/IBGEMestre em Metrologia - PUC-Rio/PósMQIhttp://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/4407df5c/attachment.htm>


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