mudar rank de um vetor

Caros listeiros, bom dia!!Recorro a vcs para resolver um problema talves simples mas que vem me incomodando a alguns meses.Tenho o seguinte vetor retirado de outro data frame: trt<-c(0,30,60,120,180,0,30,60,180,120,0,30,60,120,180) Mas cujo rank é: rank(trt) [1] 2 11 14 5 8 2 11 14 8 5 2 11 14 5 8 Como eu poderia modificar o rank do vetor? Talves colocar o rank com o valor do proprio elemento do vetor. Antecipadamente agradeço. Odirley R. Campos Engenheiro Agrônomo UFV/MG

Odirley, boa tarde! O rank() posiciona os valores de acordo com uma escala de grandeza (ascendente ou descendente). Pra mudar o ranking você teria que alterar os valores. Qual o seu objetivo? Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 29 de março de 2015 14:19, Odirley Campos <camposagro@yahoo.com.br> escreveu:
Caros listeiros, bom dia!! Recorro a vcs para resolver um problema talves simples mas que vem me incomodando a alguns meses. Tenho o seguinte vetor retirado de outro data frame:
trt<-c(0,30,60,120,180,0,30,60,180,120,0,30,60,120,180)
Mas cujo rank é:
rank(trt) [1] 2 11 14 5 8 2 11 14 8 5 2 11 14 5 8
Como eu poderia modificar o rank do vetor? Talves colocar o rank com o valor do proprio elemento do vetor.
Antecipadamente agradeço.
Odirley R. Campos Engenheiro Agrônomo UFV/MG
_______________________________________________ R-br mailing list R-br@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.

Veja a documentação das funções sort() e order(). À disposição. Walmes. Em 29/03/2015 18:13, "Éder Comunello" <comunello.eder@gmail.com> escreveu:
Odirley, boa tarde!
O rank() posiciona os valores de acordo com uma escala de grandeza (ascendente ou descendente). Pra mudar o ranking você teria que alterar os valores. Qual o seu objetivo?
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
Em 29 de março de 2015 14:19, Odirley Campos <camposagro@yahoo.com.br> escreveu:
Caros listeiros, bom dia!! Recorro a vcs para resolver um problema talves simples mas que vem me incomodando a alguns meses. Tenho o seguinte vetor retirado de outro data frame:
trt<-c(0,30,60,120,180,0,30,60,180,120,0,30,60,120,180)
Mas cujo rank é:
rank(trt) [1] 2 11 14 5 8 2 11 14 8 5 2 11 14 5 8
Como eu poderia modificar o rank do vetor? Talves colocar o rank com o valor do proprio elemento do vetor.
Antecipadamente agradeço.
Odirley R. Campos Engenheiro Agrônomo UFV/MG
_______________________________________________ R-br mailing list R-br@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.
_______________________________________________ R-br mailing list R-br@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.

Meu objetivo é plotar 3 graficos com um vetor de medias y em função das ordenadas do vetor trt. Já tentei algumas vezes, mas como o rank não obedece a mesma ordem de grandeza dos valores absolutos do trt, então quando ploto o grafico as colunas não ficam em ordem no eixo x.O problema é que o vetor trt foi retirado de uma lista de saida do procedimento "HSD.test" e guarda ainda o rank do objeto de onde foi gerado. Uma alternativa seria criar um outro vetor com os mesmos valores do trt e o rank sai correto automaticamente. Mas por curiosidade gostaria de saber se tem como mudar o rank de um vetor. Sei que é possível modificar os levels. Se fosse possível com "rank" evitaria ter que ficar colocando mais colunas no data.frame. Odirley R. Campos Engenheiro Agrônomo UFV/MG De: Éder Comunello <comunello.eder@gmail.com> Para: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br>; Odirley Campos <camposagro@yahoo.com.br> Enviadas: Domingo, 29 de Março de 2015 19:13 Assunto: Re: [R-br] mudar rank de um vetor Odirley, boa tarde! O rank() posiciona os valores de acordo com uma escala de grandeza (ascendente ou descendente). Pra mudar o ranking você teria que alterar os valores. Qual o seu objetivo? Éder Comunello <comunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 29 de março de 2015 14:19, Odirley Campos <camposagro@yahoo.com.br> escreveu: Caros listeiros, bom dia!!Recorro a vcs para resolver um problema talves simples mas que vem me incomodando a alguns meses.Tenho o seguinte vetor retirado de outro data frame: trt<-c(0,30,60,120,180,0,30,60,180,120,0,30,60,120,180) Mas cujo rank é: rank(trt) [1] 2 11 14 5 8 2 11 14 8 5 2 11 14 5 8 Como eu poderia modificar o rank do vetor? Talves colocar o rank com o valor do proprio elemento do vetor. Antecipadamente agradeço. Odirley R. Campos Engenheiro Agrônomo UFV/MG _______________________________________________ R-br mailing list R-br@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.

Pelo que entendi, reorder() é o que você precisa usar. ## 5 níveis, 4 repetições. trt <- gl(5, 4) ## Resposta. y <- rnorm(length(trt)) boxplot(y~trt) ## Fazer os níveis ordenados pelas médias. trt0 <- reorder(x=trt, y, FUN=mean) boxplot(y~trt0) À disposição. Walmes.

Odirley e Walmes, boa tarde! Pelo que entendi o reorder() reordena os níveis (x) em função da resposta (y). Na proposta que segue, sugiro reordenar os níveis diretamente, informando a ordem desejada. ### objeto "trt" montado de forma a reproduzir o ranking informado inicialmente trt <- factor(c(0,120,180,30,60,0,120,180,30,60,0,120,180,30,60), labels=c(0,120,180,30,60)) rank(trt) str(trt) # Factor w/ 5 levels "0","120","180",..: 1 4 5 2 3 1 4 5 2 3 ... trt2 <- factor(trt, c("0", "30", "60", "120", "180")) str(trt2) # Factor w/ 5 levels "0","30","60",..: 1 2 3 4 5 1 2 3 4 5 ... ### Testando com as médias informadas medias <- c(13.520,20.334,23.926,25.308,25.390,15.712,22.570,28.692,28.760,29.786,16.090,20.988,29.828,35.908,37.146) data.frame(trt, medias, trt2) ### aparentemente iguais, mas com diferença na ordenação dos níveis! par(mfcol=c(1,2)) plot(medias~trt) plot(medias~trt2) [image: Imagem inline 1] Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 31 de março de 2015 11:29, walmes . <walmeszeviani@gmail.com> escreveu:
Pelo que entendi, reorder() é o que você precisa usar.
## 5 níveis, 4 repetições. trt <- gl(5, 4)
## Resposta. y <- rnorm(length(trt))
boxplot(y~trt)
## Fazer os níveis ordenados pelas médias. trt0 <- reorder(x=trt, y, FUN=mean)
boxplot(y~trt0)
À disposição. Walmes.
_______________________________________________ R-br mailing list R-br@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.

Eder, realmente funcionou. Walmes, obrigado pela dica do reorder() Muito obrigado!! Odirley R. Campos Engenheiro Agrônomo UFV/MG
participantes (3)
-
Odirley Campos
-
walmes .
-
Éder Comunello