Zählen Sie eindeutige Werte pro Spalte
Oct 03 2020
Ich habe eine ganze Weile nach dieser Antwort gesucht, aber nichts gefunden. Hier ist sie also ... Wie kann ich die Anzahl der unterschiedlichen Werte pro Spalte zählen, wenn der folgende Datenrahmen gegeben ist?
> df <- data.frame(x = c(1,2,3), y = c(NA, NA, NA), z = c(NA, NA, 1))
> df
x y z
1 1 NA NA
2 2 NA NA
3 3 NA 1
Antworten
3 Duck Oct 03 2020 at 02:54
Sie können auch versuchen base R:
#Code
apply(df,2, function(x) length(unique(x)))
Ausgabe:
x y z
3 1 2
4 ThomasIsCoding Oct 03 2020 at 02:58
Eine einfache Basis-R-Option mit lengths+unique
> lengths(sapply(df,unique))
x y z
3 1 2
3 akrun Oct 03 2020 at 04:31
Verwenden von mapundlengths
library(purrr)
map(df, unique) %>% lengths
# x y z
#3 1 2
Oder mit data.table
library(data.table)
setDT(df)[, lapply(.SD, uniqueN)]
2 blacksite Oct 03 2020 at 02:52
Hier ist eine Möglichkeit, dies zu tun:
library(dplyr)
df %>% mutate(across(where(function(x){TRUE}), n_distinct)) %>% distinct()
Dies gilt einfach spaltenweise für dplyrdie n_distinctFunktion. Das where(function(x){TRUE})wird TRUEfür jede Spalte zurückgegeben und ist im Grunde eine Möglichkeit, alle innerhalb des acrossAnrufs auszuwählen .