Como comparar valores de uma matriz com um vetor

Para construir vetores lógicos em R, é melhor você saber como comparar valores, e R contém um conjunto de operadores que você pode usar para essa finalidade.

Video: ProcV Excel - Identificando Duplicidades na tabela

OperadorResultado
x y ==Devoluções VERDADE E se X exatamente
é igual a y
x! = yDevoluções VERDADE E se X difere
a partir de y
X gt; yDevoluções VERDADE E se X é maior
do que y
X gt; = yDevoluções VERDADE E se X é maior
que ou exatamente igual a y
X lt; yDevoluções VERDADE E se X é
menor que y
X lt; = yDevoluções VERDADE E se X é
menor ou exatamente igual a y
X & yRetorna o resultado da X e y
x | yRetorna o resultado da X ou y
! Xnão retorna X
XOR (x, y)Retorna o resultado de x xor y (x ou y, mas não xe
y)

Todos estes operadores são, mais uma vez, vetorizado. Você pode comparar um vetor inteiro com um valor.

Vamos supor que você tem dois vetores contendo o número de cestas que Granny e seu amigo Geraldine marcados nos seis jogos desta temporada de basquete:

gt; baskets.of.Granny lt; - c (12,4,4,6,9,3) gt; baskets.of.Geraldine lt; - c (5,3,2,2,12,9)

Neste jogo de basquete All-Star Grannies imaginário, para descobrir quais jogos Granny marcou mais de cinco cestas, você pode simplesmente usar este código:

Video: Aula 18 - Determinar maior e menor número (grupodnh.com)

gt; baskets.of.Granny gt; 5 [1] FALSO FALSO FALSO VERDADEIRO VERDADEIRO VERDADEIRO

Você pode ver que o resultado é o primeiro, quarto e quinto games. Este exemplo funciona bem para pequenos vetores como este, mas se você tiver um tempo muito longo vetor, contando o número de jogos seria um aborrecimento. Para o efeito, R oferece o delicioso qual() função. Para descobrir quais jogos Granny marcou mais de cinco cestas, você pode usar o seguinte código:

Video: Comparação Entre Vetores

gt; que (baskets.of.Granny gt; 5) [1] 1 4 5

Com esta linha de código, você realmente faz duas coisas diferentes: Primeiro, você faz um vetor lógico, verificando cada valor no vetor para ver se é maior que cinco. Então você passar esse vetor para o qual() , que devolve os índices na qual o valor é VERDADE.

Video: Maior e menor valor do vetor

o qual() função recebe um vetor lógico como argumento. Assim, você pode salvar o resultado de um vetor lógico em um objeto e passar isso para o qual() função, como no exemplo seguinte. Você também pode usar todos esses operadores para comparar o valor vetores por valor. Você pode facilmente descobrir os jogos em que Geraldine marcou menos cestas de Granny assim:

gt; ao melhor lt; - baskets.of.Geraldine lt; baskets.of.Grannygt; que (the.best) [1] 1 3 4

Sempre coloque espaços ao redor do menor que (lt;) E maior do que (gt;) Os operadores. Caso contrário, R podem confundir X lt; -3 para a atribuição X lt; - 3. A diferença pode parecer pequena, mas tem um enorme efeito sobre o resultado.

Tecnicamente, você também pode usar o sinal de igual (=) Como uma atribuição para evitar este problema, mas = Também é usado para atribuir valores aos argumentos em funções. Em geral, lt; - é a forma preferida para atribuir um valor a um objeto, mas muito poucos programadores discordar. Então a escolha é sua. A maioria uso lt; - em seu trabalho.


Indexing significa acessar partes de um objeto por nome ou número para extrair ou substituir valores (Allerhand, 2011)

Os objetos no R (vetores, listas, matrizes, data.frames) possuem partes diferentes. Por exemplo, vetores possuem várias células com valores diferentes, data.frames e matrizes possuem linhas e colunas e listas podem conter vários componentes. Como acessar de forma precisa apenas parte de um objeto no R? Neste mini-tutorial iremos focar nossa atenção em como selecionar e manipular partes de um vetor.

Vamos começar do mais simples para o mais complexo. Primeiro, vamos criar um vetor numérico com 10 elementos e utilizar diferentes formas de extrair/substituir valores deste vetor.

vetor <- c(2,14,12,7,8,15,99,0,2,20)

Para fazer isso utilizamos a regra geral objeto[index] <- valor. Por exemplo, para substituir o oitavo elemento por 333:

vetor[8] <- 333 vetor ## [1] 2 14 12 7 8 15 99 333 2 20

Para substituir múltiplos valores:

vetor[1:4] <- c(10,11,14,15) ### substitui os elementos 1,2,3,4 por 10,11,14,15 vetor[] <- 1 ### substitui todos elementos por 1 vetor[c(9,10)] <- c(11,100) ### Substitui os elementos 9 e 10 por 11 e 100 vetor[] <- rnorm(10,10,10) ### Substitui todos os elementos por valores aleatórios com distribuição normal ### Compare o último vetor com o vetor que foi criado no início: vetor ## [1] 17.057321 11.750354 5.723550 16.757274 17.729733 12.279482 29.096551 ## [8] 21.481600 8.517794 11.798754

  1. Mike Allerhand, 2011. A Tiny Handbook of R. Springer, ISBN: 978-3-642-17979-2

Deseja contribuir? Entre em contato. Gustavo Paterno - 2014 ()

Olá Bruno!

Você quer uma solução apenas em VBA ou se for uma fórmula na planilha te atende?

Não há necessidade de VBA para realizar essa comparação, você pode utilizar o recurso de fórmula matricial do Excel. A fórmula vai ficar um pouco longa porque você tem muitas colunas para comparar, mas a ideia é comparar cada valor de cada coluna e ir gerando vetores com valores booleanos (VERDADEIRO ou FALSO) que vão ser multiplicado entre eles, no final da multiplicação, se houve correspondência em todas as colunas a multiplicação vai resultar em 1, e então trazemos, por exemplo, o valor da linha para ser utilizado com a função DESLOC. Observe o modelo abaixo:

Como comparar valores de uma matriz com um vetor

A fórmula deste modelo, que deve ser inserida com CTRL + SHIFT + ENTER é:

=SEERRO(DESLOC($M$1;MÍNIMO(SE((A10=A2:A5)*(B10=B2:B5)*(C10=C2:C5)*(D10=D2:D5)*(E10=E2:E5)*(F10=F2:F5)*(G10=G2:G5)*(H10=H2:H5)*(I10=I2:I5)*(J10=J2:J5)*(K10=K2:K5)*(L10=L2:L5)=1;LIN(M2:M5);""))-1;0);"Não Localizado")

Outra alternativa também com fórmula matricial, seria comparar os valores concatenando cada coluna. Observe a fórmula para o modelo da imagem:

=SEERRO(DESLOC($M$1;MÍNIMO(SE(A2:A5&B2:B5&C2:C5&D2:D5&E2:E5&F2:F5&G2:G5&H2:H5&I2:I5&J2:J5&K2:K5&L2:L5=A10&B10&C10&D10&E10&F10&G10&H10&I10&J10&K10&L10;LIN(M2:M5);""))-1;0);"Não Localizado")

Se quiser entender melhor pode baixar também o modelo pelo link:

https://dl.dropboxusercontent.com/u/80811028/Modelo%20-%20F%C3%B3rmula%20matricial%20-%20Comparar%20linhas.xlsx

Abraços!

Rafael Kamimura


Para construir vetores lógicos em R, é melhor você saber como comparar valores, e R contém um conjunto de operadores que podem ser utilizados para esta finalidade.

OperadorResultado
x == yretorna VERDADE E se x exactlyequals y
x! = yretorna VERDADE E se x difere de y
x> yretorna VERDADE E se x é largerthan y
x> = yretorna VERDADE E se x é largerthan ou exactamente igual y
x lt; yretorna VERDADE E se x issmaller de y
x lt; = yretorna VERDADE E se x issmaller do que ou igual a exatamente y
x yRetorna o resultado da x e y
x | yRetorna o resultado da x ou y
! xnão retorna x
XOR (x, y)Retorna o resultado de x xor y (x ou y, mas não x andy)

Todos estes operadores são, mais uma vez, vetorizado. Você pode comparar um vetor inteiro com um valor.

Vamos supor que você tem dois vetores contendo o número de cestas que Granny e seu amigo Geraldine marcados nos seis jogos desta temporada de basquete:

> baskets.of.Granny lt; - c (12,4,4,6,9,3)> baskets.of.Geraldine lt; - c (5,3,2,2,12,9)

Neste jogo de basquete All-Star Grannies imaginário, para descobrir quais jogos Granny marcou mais de cinco cestas, você pode simplesmente usar este código:

> Baskets.of.Granny> 5 [1] false false false Verdadeiro Verdadeiro Verdadeiro

Você pode ver que o resultado é o primeiro, quarto e quinto games. Este exemplo funciona bem para pequenos vetores como este, mas se você tem um tempo muito longo vetor, contando o número de jogos seria um aborrecimento. Para esse efeito, R oferece o delicioso qual() função. Para descobrir quais jogos Granny marcou mais de cinco cestas em, você pode usar o seguinte código:



> Que (baskets.of.Granny> 5) [1] 1 4 5

Com esta linha de código, você realmente faz duas coisas diferentes: Primeiro, você faz um vetor lógico, verificando todos os valores do vector para ver se é maior que cinco. Então você passa que de vetor para o qual() , que devolve os índices na qual o valor é VERDADE.

o qual() função recebe um vetor lógico como argumento. Assim, você pode salvar o resultado de um vector lógica em um objeto e passar isso para o qual() função, como no exemplo seguinte. Você também pode usar todos esses operadores para comparar o valor vetores por valor. Você pode facilmente descobrir os jogos em que Geraldine marcou menos cestas de Granny como este:

> the.best lt; - baskets.of.Geraldine lt; baskets.of.Granny> que (the.best) [1] 1 3 4

Sempre coloque espaços em torno do menor que (lt;) E maior do que (>) Os operadores. Caso contrário, R podem confundir x lt; -3 para a atribuição x lt; - 3. A diferença pode parecer pequena, mas tem um enorme efeito sobre o resultado.

Tecnicamente, você também pode usar o sinal de igual (=) Como uma atribuição para evitar este problema, mas = Também é usado para atribuir valores aos argumentos em funções. Em geral, lt; - é a maneira preferida para atribuir um valor a um objeto, mas muito poucos programadores discordar. Então, cabe a você. a maioria de uso lt; - em seu trabalho.

Como comparar valores de uma matriz com um vetor
Como olhar para a estrutura de vetores em R

UMA vetor é um conjunto unidimensional de valores, todos do mesmo tipo. É a menor unidade que você pode trabalhar com a R. Um único valor é tecnicamente um vetor, bem como - um vetor com apenas um elemento. Em matemática vetores são quase…

Como comparar valores de uma matriz com um vetor
Como nomear linhas da matriz e colunas em R

o rbind () em função de R convenientemente adiciona os nomes dos vectores para as linhas da matriz. Você nomeia os valores em um vetor, e você pode fazer algo muito semelhante com linhas e colunas em uma matriz.Para isso, você tem as funções…

Como comparar valores de uma matriz com um vetor
Como reciclar Argumentos em R

Cada vez, você combina um vetor com valores múltiplos e um com um único valor em uma função. R aplica a função, usando esse valor único para cada valor no vetor. Mas a reciclagem vai muito além destes exemplos.Qualquer vez que você dá…

Como comparar valores de uma matriz com um vetor
Como resumir vetores lógicos em R

Se você usar valores lógicos em operações aritméticas, R vê VERDADE Como 1 e FALSO Como 0. Isto permite a algumas construções muito interessantes.Para ilustrar, vamos supor que você tem dois vetores contendo o número de cestas que Granny e…

Como comparar valores de uma matriz com um vetor
Como testar Vector Tipos em R

R contém um conjunto de funções que permitem que você teste para o tipo de um vetor. Todas estas funções têm a mesma sintaxe: é, um ponto, e, em seguida, o nome do tipo.Você pode testar se um vetor é do tipo foo usando o is.foo ()…

Como comparar valores de uma matriz com um vetor
Como usar aritméticas Operações do vetor em R

Um conjunto de funções aritméticas em R consiste de funções em que o resultado é dependente de mais do que um valor no vetor. Somando um vetor com o soma() função é tal operação. Aqui estão alguns outros:FunçãoO que fazsum (x)Calcula a…

Como comparar valores de uma matriz com um vetor
Como usar vetores lógicos como índices em R

A função índice em P não leva somente vetores numéricos como arguments- ele também trabalha com vetores lógicos. Você pode usar esses vetores lógicos de forma muito eficiente para selecionar alguns valores a partir de um vector.Se você…

Como comparar valores de uma matriz com um vetor
Como vetorizar suas funções em R

funções Vectorized são uma característica muito útil de R, mas os programadores que estão acostumados a outras línguas muitas vezes têm dificuldade com este conceito em primeiro lugar. UMA vectorized função não funciona apenas em um…

Como comparar valores de uma matriz com um vetor
Como adicionar Observações para um quadro de dados em R

Como o tempo passa, novos dados podem aparecer e precisa ser adicionado ao conjunto de dados em R. Assim como matrizes, quadros de dados pode ser anexado usando o rbind () função.Adicionando uma única observaçãoDizer que a avó e Geraldine…

Como comparar valores de uma matriz com um vetor
Como alterar valores em um vetor em R

Alterar valores em um vetor em R é realmente muito simples. Para ilustrar, vamos supor que você criou dois vetores contendo o número de cestas que Granny e Geraldine feitas em seis jogos de basquete, como segue:> baskets.of.Granny lt; - c…

Como comparar valores de uma matriz com um vetor
Como criar um quadro de dados a partir de uma matriz em R

Você pode criar um quadro de dados a partir de uma matriz na R. Dê uma olhada no número de cestos marcados pela avó e seu amigo Geraldine. Se você criar uma matriz baskets.team com o número de cestas para ambas as senhoras, você tem isso:>…