visualizar mtcars functions español ejemplos data crear column r dataframe

mtcars - Valores únicos en cada una de las columnas de un marco de datos



r data frame mtcars (8)

Quiero obtener el número de valores únicos en cada una de las columnas de un marco de datos. Digamos que tengo el siguiente marco de datos:

DF <- data.frame(v1 = c(1,2,3,2), v2 = c("a","a","b","b"))

luego debería regresar que hay 3 valores distintos para v1 y 2 para v2.

Intenté único (DF), pero no funciona, ya que cada fila es diferente.


Aquí hay un enfoque:

> lapply(DF, function(x) length(table(x))) $v1 [1] 3 $v2 [1] 2

Esto básicamente tabula los valores únicos por columna. Usando length en eso te dice el número. La eliminación de la length le mostrará la tabla real de valores únicos.


Creo que una función como esta te daría lo que estás buscando. Esto también muestra los valores únicos, además de la cantidad de NA que hay en las columnas de cada marco de datos. Simplemente conecte su dataframe y estará listo para comenzar.

totaluniquevals <- function(df) { x <<- data.frame("Row Name"= numeric(0), "TotalUnique"=numeric(0), "IsNA"=numeric(0)) result <- sapply(df, function(x) length(unique(x))) isnatotals <- sapply(df, function(x) sum(is.na(x))) #Now Create the Row names for (i in 1:length(colnames(df))) { x[i,1] <<- (names(result[i])) x[i,2] <<- result[[i]] x[i,3] <<- isnatotals[[i]] } return(x) }

Prueba:

DF <- data.frame(v1 = c(1,2,3,2), v2 = c("a","a","b","b")) totaluniquevals(DF) Row.Name TotalUnique IsNA 1 v1 3 0 2 v2 2 0

A continuación, puede utilizar el único en cualquier columna, para ver cuáles son los valores únicos específicos.

único (DF $ v2) [1] ab Niveles: ab


En dplyr :

DF %>% summarise_all(funs(n_distinct(.)))


En aras de la exhaustividad: desde la versión CRAN 1.9.6 de 19 de septiembre de 2015, el paquete data.table incluye la función uniqueN() que nos ahorra escribir

function(x) length(unique(x))

cuando llamas a uno de los hermanos de apply() :

sapply(DF, data.table::uniqueN)

v1 v2 3 2

Tenga en cuenta que ni el paquete data.table debe cargar ni DF data.table a class data.table para utilizar uniqueN() , aquí.


Esto debería funcionar para obtener un valor único para cada variable:

length(unique(datasetname$variablename))


Esto le dará valores únicos en el marco de datos DF de la columna 1.

unique(sc_data[,1])


O usando unique :

rapply(DF,function(x)length(unique(x))) v1 v2 3 2


sapply(DF, function(x) length(unique(x)))