Я не получил, если вы хотели количество уникальных значений по строке или столбцу. Я предлагаю и
Если у вас есть объемные данные, вы должны взглянуть на data.table
.
Давайте рассмотрим глупый пример
library(data.table)
df = data.table(
x = c(1,2),
y = c(1,1),
z = c(2,3)
)
уникальный по столбцу
Простейший ответ:
df[,lapply(.SD,uniqueN)]
уникально по строке
Решением может быть преобразование ваших данных в длинный формат и подсчет по группам
Затем, вы генерируете идентификатор строки (seq_len(.N)
означает от 1 до n в data.table
глаголах). Этот столбец используется для поворота данных (melt
- встроенная функция в data.table
, эквивалентная pivot_long
в тидире), а затем используется uniqueN
встроенная функция из data.table
.
df[,'id' := seq_len(.N)]
df2 <- melt(df, id.vars = "id")
df2[, (count_unique = uniqueN(value)), by = "id"]
df2[, (count_unique = uniqueN(value)), by = "id"]
id V1
1: 1 2
2: 2 3