Поскольку результатом data.frame()
является фрейм данных, можно сразу использовать для него оператор извлечения.
# generate the data
x <- c(rep("ABC",10),rep("DEF",9))
# extract string with highest frequency from table
data.frame(sort(table(x),decreasing=TRUE))[1,1]
... и результат:
> data.frame(sort(table(x),decreasing=TRUE))[1,1]
[1] ABC
Levels: ABC DEF
>
Можно использовать as.character()
для удаления уровней фактора из результата.
На основе комментариев необходимо получить счетчики для числовых переменных, а затем использовать исходное числовое значение для поднабора исходного кадра данных.
Вот решение, которое обрабатывает дополнительное требование, используя пакет sqldf
.
# SQLDF solution
library(sqldf)
x <- data.frame(V1=c(rep(1,10),rep(2,8)),stringsAsFactors=FALSE)
sqlStmt <- "select V1, count(*) as count from x group by V1"
y <- sqldf(sqlStmt)
z <- y[y$count == max(y$count),1]
class(z)
... и вывод.
> z <- y[y$count == max(y$count),1]
> class(z)
[1] "numeric"
Обратите внимание, что класс конечного результата все еще числовой, а не преобразуется в значение фактора или символа.