Я думаю, что вы ищете это.
sort(table(unlist(df1[-1])), decreasing=TRUE)
# 31002 38005 24003 34002 28002
# 13222 13193 13019 13018 12625
Это означает, что вы исключаете столбец 1, содержащий идентификаторы, и «выводите из списка» оставшуюся часть вашего фрейма данных в вектор.Затем table()
подсчитывает появление каждого значения, которое вы также можете sort()
.Установите опцию decreasing=TRUE
, и первые два значения являются двумя наиболее частыми.
Если вывод становится длинным из-за большого количества значений, вы можете включить код в head(.)
.Длина вывода по умолчанию равна шести, но вы можете ограничить ее до двух, указав n=2
, что даст вам именно то, что вы хотите.Никаких пакетов не нужно.
head(sort(table(unlist(df1[-1])), decreasing=TRUE), n=2)
# 31002 38005
# 13222 13193
ДАННЫЕ:
set.seed(42) # for sake of reproducibility
df1 <- data.frame(id=1:9750,
matrix(sample(c(38005, 28002, 34002, NA, 24003, 31002), 7.8e4,
replace=TRUE), nrow=9750,
dimnames=list(NULL, paste0("P", 1:8))))