Encontrar o maior valor por linha entre colunas

Olá a todos. Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão? Daniel

col.max(x) On Wednesday, 28 December 2011, Daniel Marcelino <dmsilva.br@gmail.com> wrote:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.

apply(x, 1, max) ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Creio que seria max.col(). Eu não conhecia essa função ainda, estou desatualizado.... Explorando os argumentos, descobri que é mais rápido usar max.col(matrix, ties.method="first") ou max.col(matrix, ties.method="last") pois isso evita um sorteio quando escolhe-se ties.method="random", a opção default. Elias T. Krainski
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br> Enviadas: Quarta-feira, 28 de Dezembro de 2011 8:49 Assunto: Re: [R-br] Encontrar o maior valor por linha entre colunas
col.max(x)
On Wednesday, 28 December 2011, Daniel Marcelino <dmsilva.br@gmail.com> wrote:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.

Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.

apply(objeto, 1, which.max) 2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>
Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.

Fenbrnando ele perguntou pelo nome da coluna e nao apenas o numero dela por isto o names()[which.max()] Em Qua, 2011-12-28 às 11:31 -0200, FHRB Toledo escreveu:
apply(objeto, 1, which.max)
2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br> Um exemplo
> M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) > M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 > M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) > M <- as.data.frame(M) > names(M) <- c("x","y","z") > M$MAX <- apply(M, 1, max) > M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) > M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu: > Olá a todos. > > Eu tenho um pequeno problema que é justamente encontrar qual é o maior > valor entre as colunar em cada linha. > Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da > coluna para cada valor encontrado. Alguém tem alguma sugestão? > > Daniel > _______________________________________________ > 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.
_______________________________________________ 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.

Bom dia, acho que
max.col(M)
resolve... Marcelo R. P. Ferreira Professor Assistente 2 Departamento de Estatística/UFPB Tel.: +55 83 3216-7075/7785/7565 (ramal 210) http://www.de.ufpb.br/~marcelo Em 28 de dezembro de 2011 10:31, FHRB Toledo <fernandohtoledo@gmail.com>escreveu:
apply(objeto, 1, which.max)
2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>
Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.
_______________________________________________ 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.

Paulo, Sua sugestão é mais correta e genérica que apenas o which.max()! Obrigado, FH 2011/12/28 Marcelo Rodrigo <marcelorpf@gmail.com>
Bom dia,
acho que
max.col(M)
resolve...
Marcelo R. P. Ferreira Professor Assistente 2 Departamento de Estatística/UFPB Tel.: +55 83 3216-7075/7785/7565 (ramal 210) http://www.de.ufpb.br/~marcelo
Em 28 de dezembro de 2011 10:31, FHRB Toledo <fernandohtoledo@gmail.com>escreveu:
apply(objeto, 1, which.max)
2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>
Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.
_______________________________________________ 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.

Obrigado pela dicas. A única correção que eu preciso fazer é determinar a partir de qual coluna eu quero comparar i.e a partir da terceira etc. Abs, Daniel 2011/12/28 FHRB Toledo <fernandohtoledo@gmail.com>:
Paulo,
Sua sugestão é mais correta e genérica que apenas o which.max()!
Obrigado, FH
2011/12/28 Marcelo Rodrigo <marcelorpf@gmail.com>
Bom dia,
acho que
max.col(M)
resolve...
Marcelo R. P. Ferreira Professor Assistente 2 Departamento de Estatística/UFPB Tel.: +55 83 3216-7075/7785/7565 (ramal 210) http://www.de.ufpb.br/~marcelo
Em 28 de dezembro de 2011 10:31, FHRB Toledo <fernandohtoledo@gmail.com> escreveu:
apply(objeto, 1, which.max)
2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>
Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o maior valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- -------------------------------------------------- View my research on these pages: http://www.crcee.umontreal.ca http://danielmarcelino.com http://ssrn.com/author=1640522 -------------------------------------------------- My contacts: Phone 1+514 343 6111 Ext 3799 Skype: d.marcelino 3200 Jean Brillant, Office C5075 Montreal, QC; H3T 1N8 Canada -----------------------------------------------------

Daniel, tente:
apply(objeto[,3:ncol(objeto)], 1, names[which.max()])
att, FH 2011/12/29 Daniel Marcelino <dmsilva.br@gmail.com>
Obrigado pela dicas. A única correção que eu preciso fazer é determinar a partir de qual coluna eu quero comparar i.e a partir da terceira etc.
Abs, Daniel
2011/12/28 FHRB Toledo <fernandohtoledo@gmail.com>:
Paulo,
Sua sugestão é mais correta e genérica que apenas o which.max()!
Obrigado, FH
2011/12/28 Marcelo Rodrigo <marcelorpf@gmail.com>
Bom dia,
acho que
max.col(M)
resolve...
Marcelo R. P. Ferreira Professor Assistente 2 Departamento de Estatística/UFPB Tel.: +55 83 3216-7075/7785/7565 (ramal 210) http://www.de.ufpb.br/~marcelo
Em 28 de dezembro de 2011 10:31, FHRB Toledo <fernandohtoledo@gmail.com
escreveu:
apply(objeto, 1, which.max)
2011/12/28 Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>
Um exemplo
M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M [,1] [,2] [,3] [1,] 11.6 10.3 10.2 [2,] 10.6 11.0 8.6 [3,] 11.6 10.7 9.7 [4,] 10.5 11.1 7.8 [5,] 10.3 8.4 9.4 M <- matrix(round(rnorm(15, m=10), dig=1), nc=3) M <- as.data.frame(M) names(M) <- c("x","y","z") M$MAX <- apply(M, 1, max) M$COLMAX <- apply(M, 1, function(x) names(M)[which.max(x)]) M x y z MAX COLMAX 1 10.6 8.9 10.5 10.6 x 2 11.2 8.8 10.7 11.2 x 3 8.7 10.9 7.7 10.9 y 4 11.3 10.4 10.4 11.3 x 5 10.5 9.6 10.2 10.5 x
Em Qua, 2011-12-28 às 02:02 -0500, Daniel Marcelino escreveu:
Olá a todos.
Eu tenho um pequeno problema que é justamente encontrar qual é o
maior
valor entre as colunar em cada linha. Como eu poderia obter uma nova coluna ou mesmo um objeto com o nome da coluna para cada valor encontrado. Alguém tem alguma sugestão?
Daniel _______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- -------------------------------------------------- View my research on these pages: http://www.crcee.umontreal.ca http://danielmarcelino.com http://ssrn.com/author=1640522 -------------------------------------------------- My contacts: Phone 1+514 343 6111 Ext 3799 Skype: d.marcelino 3200 Jean Brillant, Office C5075 Montreal, QC; H3T 1N8 Canada ----------------------------------------------------- _______________________________________________ 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.
participantes (7)
-
Benilton Carvalho
-
Daniel Marcelino
-
Elias T. Krainski
-
FHRB Toledo
-
Marcelo Rodrigo
-
Paulo J Ribeiro Jr
-
Walmes Zeviani