Contenido principal

unique

Descripción

C = unique(A) devuelve los mismos datos que en A, pero sin repeticiones. C está ordenada.

  • Si A es una tabla u horario, unique devuelve las filas únicas de A ordenadas. En el caso de los horarios, unique tiene en cuenta las horas y los valores de cada fila para determinar si estas son únicas y ordena el horario de salida C según las horas de cada fila.

  • Si A es un arreglo categórico, el orden se basa en el orden de las categorías.

ejemplo

C = unique(A,setOrder) especifica si devolver los valores únicos de A ordenados o en orden estable.

ejemplo

C = unique(___,occurrence) especifica si devolver el primer o el último índice de los valores repetidos para cualquiera de las sintaxis previas.

C = unique(___,"rows") trata cada fila de A como una entidad independiente y devuelve las filas únicas de A ordenadas. La opción "rows" no es compatible cuando los datos de entrada son un arreglo de celdas de vectores de caracteres.

ejemplo

C = unique(___,"legacy") conserva el comportamiento de la función unique de la versión R2012b y anteriores. No se admite la especificación de la opción "legacy" con TreatMissingAsDistinct o con los argumentos setOrder y occurrence. La opción "legacy" no es compatible con arreglos categorical, arreglos datetime, arreglos duration, arreglos calendarDuration, tablas u horarios.

C = unique(___,TreatMissingAsDistinct=tf) especifica si tratar los valores faltantes como distintos. (desde R2026a)

ejemplo

[C,ia,ic] = unique(___) también devuelve vectores de índices ia e ic mediante cualquiera de las sintaxis anteriores.

  • Si A es un vector, C = A(ia) y A = C(ic).

  • Si A es una matriz o un arreglo, C = A(ia) y A(:) = C(ic).

  • Si especifica la opción "rows", C = A(ia,:) y A = C(ic,:).

  • Si A es una tabla o un horario, C = A(ia,:) y A = C(ic,:).

ejemplo

Ejemplos

contraer todo

Cree un vector con un valor repetido. Luego, encuentre los valores únicos del vector.

A = [9 2 9 5];
C = unique(A)
C = 1×3

     2     5     9

Cree una tabla con algunos datos repetidos.

Name = ["Fred"; "Betty"; "Bob"; "George"; "Jane"];
Age = [38; 43; 38; 40; 38];
Height = [71; 69; 64; 67; 64];
Weight = [176; 163; 131; 185; 131];
A = table(Age,Height,Weight,RowNames=Name)
A=5×3 table
              Age    Height    Weight
              ___    ______    ______

    Fred      38       71       176  
    Betty     43       69       163  
    Bob       38       64       131  
    George    40       67       185  
    Jane      38       64       131  

Encuentre las filas únicas de A. unique devuelve las filas de A ordenadas por la primera variable Age y después por la segunda variable Height.

C = unique(A)
C=4×3 table
              Age    Height    Weight
              ___    ______    ______

    Bob       38       64       131  
    Fred      38       71       176  
    George    40       67       185  
    Betty     43       69       163  

Encuentre las filas de la tabla con valores únicos en la primera variable Age. Si desea que solo una variable de la tabla contenga valores únicos, puede utilizar los índices devueltos por unique para extraer esas filas de la tabla.

[C,ia] = unique(A.Age);
B = A(ia,:)
B=3×3 table
              Age    Height    Weight
              ___    ______    ______

    Fred      38       71       176  
    George    40       67       185  
    Betty     43       69       163  

Cree un vector con un valor repetido. Encuentre los valores únicos de A y devuelva los vectores de índices ia e ic, tales que C = A(ia) y A = C(ic).

A = [9 2 9 5];
[C, ia, ic] = unique(A)
C = 1×3

     2     5     9

ia = 3×1

     2
     4
     1

ic = 4×1

     3
     1
     3
     2

Cree una matriz de 10 por 3 con algunas filas repetidas.

A = randi(3,10,3)
A = 10×3

     3     1     2
     3     3     1
     1     3     3
     3     2     3
     2     3     3
     1     1     3
     1     2     3
     2     3     2
     3     3     2
     3     3     1

Encuentre las filas únicas de A en función de los datos de las dos primeras columnas. Especifique tres salidas para devolver los vectores de índices ia e ic.

[C,ia,ic] = unique(A(:,1:2),"rows")
C = 7×2

     1     1
     1     2
     1     3
     2     3
     3     1
     3     2
     3     3

ia = 7×1

     6
     7
     3
     5
     1
     4
     2

ic = 10×1

     5
     7
     3
     6
     4
     1
     2
     4
     7
     7

Utilice ia para indexar en A y recuperar las filas que tienen combinaciones únicas de elementos en las dos primeras columnas.

uA = A(ia,:)
uA = 7×3

     1     1     3
     1     2     3
     1     3     3
     2     3     3
     3     1     2
     3     2     3
     3     3     1

Encuentre los elementos únicos en un vector y luego use accumarray para contar el número de veces que aparece cada elemento único.

Cree un vector de números enteros aleatorios del 1 al 5. Encuentre los elementos únicos en el vector y devuelva los vectores de índices ia e ic.

a = randi([1 5],200,1);
[C,ia,ic] = unique(a);

Cuente el número de veces que cada elemento de C aparece en a. Especifique ic como primera entrada a accumarray y 1 como segunda entrada para que la función cuente los subíndices repetidos en ic. Resuma los resultados.

a_counts = accumarray(ic,1);
value_counts = [C, a_counts]
value_counts = 5×2

     1    46
     2    36
     3    38
     4    39
     5    41

Cree un vector con un valor repetido. Encuentre los valores únicos del vector y devuélvalos en el mismo orden en el que aparecen en el vector especificando el orden del conjunto como "stable".

A = [9 2 9 5];
C = unique(A,"stable")
C = 1×3

     9     2     5

Cree un vector que contenga valores faltantes. Busque los valores únicos en el vector. unique trata cada instancia de un valor faltante como un valor distinto.

A = [5 8 NaN NaN];
C = unique(A)
C = 1×4

     5     8   NaN   NaN

De forma alternativa, trate cada instancia de un valor faltante como un valor duplicado (desde la versión R2026a).

C2 = unique(A,TreatMissingAsDistinct=false)
C2 = 1×3

     5     8   NaN

Cree un vector x. Obtenga un segundo vector y transformando y destransformando x. Esta transformación introduce diferencias de redondeo en y.

x = (1:6)'*pi;
y = 10.^log10(x);

Compruebe que x e y no son idénticos obteniendo la diferencia.

x-y
ans = 6×1
10-14 ×

    0.0444
         0
         0
         0
         0
   -0.3553

Concatene los vectores x e y. Después, utilice unique para encontrar los elementos únicos. La función unique realiza comparaciones exactas y determina que algunos valores de x no son exactamente iguales a los valores de y. Son los mismos elementos que tienen una diferencia distinta de cero en x-y. Por lo tanto, C contiene valores que parecen ser duplicados.

A = [x; y];
C = unique(A)
C = 8×1

    3.1416
    3.1416
    6.2832
    9.4248
   12.5664
   15.7080
   18.8496
   18.8496

Utilice uniquetol para realizar la comparación con una tolerancia pequeña. uniquetol trata como iguales los elementos que están dentro de la tolerancia.

Ctol = uniquetol(A)
Ctol = 6×1

    3.1416
    6.2832
    9.4248
   12.5664
   15.7080
   18.8496

Cree un arreglo de cadenas. Encuentre los vectores de caracteres únicos que contiene A.

A = ["one" "two" "twenty-two" "One" "two"];
C = unique(A)
C = 1×4 string
    "One"    "one"    "twenty-two"    "two"

Cree un arreglo de cadenas donde una de las cadenas tenga espacios en blanco al final. Encuentre las cadenas únicas en el arreglo. unique trata las cadenas con espacios en blanco al final como cadenas distintas.

A = ["dog" "cat" "horse" "horse" "dog "];
C = unique(A)
C = 1×4 string
    "cat"    "dog"    "dog "    "horse"

Argumentos de entrada

contraer todo

Datos de entrada, especificados como un arreglo, una tabla o un horario.

  • Si A es una tabla, unique no tiene en cuenta los nombres de las filas. Dos filas que tienen los mismos valores pero nombres diferentes se consideran iguales.

  • Si A es un horario, unique tiene en cuenta las horas de las filas. Dos filas que tienen los mismos valores pero horas diferentes no se consideran iguales.

  • Si A es un arreglo categórico, el orden se basa en el orden de las categorías. Para ver el orden de un arreglo categórico, utilice la función categories.

A también puede ser un objeto con estos métodos de clase:

  • sort (o sortrows, si especifica la opción "rows")

  • ne (no es igual)

Los métodos no deben tener comportamientos o resultados contradictorios. sort o sortrows deben utilizar un algoritmo de ordenación estable. Por ejemplo, puede especificar A como un arreglo heterogéneo derivado de una clase raíz común (por ejemplo, un arreglo de objetos de gráficas).

Orden de los valores devueltos en C, especificado como uno de los valores de esta tabla.

ValorDescripción

"sorted"

Devuelve los valores (o filas) de C en orden tal y como los devuelve sort.

"stable"

Devuelve los valores (o filas) de C en el mismo orden que en A.

Ejemplo: C = unique([5 5 3 4],"sorted") devuelve los valores en orden tal y como C = [3 4 5].

Ejemplo: C = unique([5 5 3 4],"stable") devuelve los valores en orden estable como C = [5 3 4].

Aparición de índices devueltos en ia, especificada como uno de los valores de esta tabla.

ValorDescripción
"first"Si A tiene valores (o filas) repetidos, ia contiene el índice de la primera aparición del valor repetido.
"last"Si A tiene valores (o filas) repetidos, ia contiene el índice de la última aparición del valor repetido.

Ejemplo: [C,ia,ic] = unique([9 9 9],"first") devuelve el índice a la primera aparición del valor repetido como ia = 1.

Ejemplo: [C,ia,ic] = unique([9 9 9],"last") devuelve el índice a la última aparición del valor repetido como ia = 3.

Desde R2026a

Opción para tratar los valores faltantes como distintos, especificada como uno de estos valores:

  • true o 1: trata los valores faltantes como distintos. Cada instancia de un valor faltante en los datos de entrada se incluye en C.

  • false o 0: trata cada instancia repetida de un valor faltante como un duplicado. Como máximo se incluye un valor faltante en C. Si los datos de entrada son una tabla o si se especifica la opción "rows", C puede contener varias filas con valores faltantes. Las filas son duplicados si tienen valores faltantes en las mismas columnas y valores no faltantes coincidentes en las otras columnas.

Ejemplo: C = unique(A,TreatMissingAsDistinct=false) trata cada instancia repetida de un valor faltante como un duplicado.

Tipos de datos: logical

Argumentos de salida

contraer todo

Datos únicos de A, devueltos como un arreglo, tabla u horario. La clase de C es la misma que la clase de la entrada A. La forma de C depende de la forma de A.

  • Si no se especifica la opción "rows" y A es un vector fila, C es un vector fila.

  • Si no se especifica la opción "rows" y A es un vector columna, C es un vector columna.

  • Si no se especifica la opción "rows", C es una matriz que contiene las filas únicas de A.

  • Si A es una tabla o un horario, C es una tabla o un horario con el mismo número de variables que A.

Índice a A, devuelto como un vector columna de índices a la primera aparición de elementos repetidos. Si se especifica occurrence como "last", ia contiene índices a la última aparición de elementos repetidos.

Los índices suelen satisfacer C = A(ia). Si A es una tabla o un horario, o si se especifica la opción "rows", C = A(ia,:).

Índice a C, devuelto como vector columna.

  • Si A es un vector, A = C(ic).

  • Si A es una matriz o un arreglo, A(:) = C(ic).

  • Si A es una tabla o un horario, o si se especifica la opción "rows", A = C(ic,:).

Sugerencias

  • Use uniquetol para encontrar números de punto flotante únicos mediante una tolerancia.

  • Para encontrar filas únicas en tablas u horarios con respecto a un subconjunto de variables, puede utilizar el subíndice de variable. Por ejemplo, puede utilizar unique(A(:,vars)), donde vars es un entero positivo, un vector de enteros positivos, un nombre de variable, un arreglo de celdas de nombres de variables o un vector lógico. También puede utilizar vartype para crear un subíndice que seleccione variables de un tipo especificado.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo