Как извлечь значение вывода в R? - PullRequest
0 голосов
/ 02 июня 2019

Как вы можете извлечь значение индекса результата в R.

data.frame(sort(table(df$col1),decreasing=TRUE))

Это приводит к выводу значения col1 и его количества. Вывод следующий:

          Var1   |    freq
   ---------------------------
    1     ABC    |      10
    2     DEF    |       9
   ...

Я в основном пытаюсь извлечь 'ABC'.


ОБНОВЛЕННЫЙ ОТВЕТ:

Следующие параметры будут выводить наибольшее значение повторного выделения в столбце (col1) при сохранении исходного типа данных:

subset(df,!is.na(df$col1),) %>% count(col1) %>% arrange(desc(n)) %>% c(1)[1][[1]]
OR
data.frame(sort(table(df$col1),decreasing=TRUE))[1,1]
OR
sqldf("SELECT COUNT(*) as count, col1 FROM df WHERE col1 IS NOT NULL GROUP BY col1 ORDER BY count DESC")$col1[1]

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Поскольку результатом 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"

Обратите внимание, что класс конечного результата все еще числовой, а не преобразуется в значение фактора или символа.

1 голос
/ 02 июня 2019

, если вы хотите извлечь значения из одного столбца, используя пакет dplyr , вы можете использовать select. Например, 1004 *

Чтобы узнать индекс любого столбца / атрибутов и индекс значений в столбце, вы можете использовать which, для этого синтаксиса требуется логический оператор и одно значение. Например, `which (colnames (df) == 'column_name'), это дает вам индекс этого столбца.

Для нахождения индекса любых значений этого столбца можно использовать which(df$col1 == 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...