SQLDF R: подсчет уникальных значений во фрейме данных

У меня есть фрейм данных с одним столбцом. Есть 10 рядов.

(4.0 * 3.0)
(4.0 * 3.0)
(2.0 * (1.0 * (1.0 * 6.0)))
(4.0 * (3.0 * 1.0))
(6.0 * 2.0)
(6.0 * 2.0)
(2.0 * 6.0)
(2.0 * 6.0)
(2.0 * 6.0)
(6.0 * 2.0)

Мне нужно извлечь уникальные значения в столбце и сколько раз это происходит. Используя пакет sqldf, я смог получить уникальные значения. Но не в счет.

Запрос:

sqldf("SELECT V1, COUNT(DISTINCT V1) as DinctC from dataset GROUP BY V1")

Выход:

                           V1 DinctC
1 (2.0 * (1.0 * (1.0 * 6.0)))      1
2                 (2.0 * 6.0)      1
3         (4.0 * (3.0 * 1.0))      1
4                 (4.0 * 3.0)      1
5                 (6.0 * 2.0)      1

Что я хочу это:

                           V1 DinctC
1 (2.0 * (1.0 * (1.0 * 6.0)))      1
2                 (2.0 * 6.0)      3
3         (4.0 * (3.0 * 1.0))      1
4                 (4.0 * 3.0)      2
5                 (6.0 * 2.0)      3

Редактировать: Как отметил Тим Бигелейзен, "Отличительный" не является функцией, поэтому нет необходимости в скобках. Таким образом, обновление DISTINCT(V1) до DISTINCT V1

2 ответа

Нам не нужно отдельное ключевое слово, так как мы используем предложение GROUP BY.

sqldf("SELECT V1, COUNT(V1) as DinctC from dataset GROUP BY V1")

Результат:

                           V1 DinctC
1 (2.0 * (1.0 * (1.0 * 6.0)))      1
2                 (2.0 * 6.0)      3
3         (4.0 * (3.0 * 1.0))      1
4                 (4.0 * 3.0)      2
5                 (6.0 * 2.0)      3

Мы можем использовать count

library(dplyr)
count(df, V1)
# A tibble: 5 x 2
#                          V1     n
#                       <chr> <int>
#1 (2.0 * (1.0 * (1.0 * 6.0)))     1
#2                 (2.0 * 6.0)     3
#3         (4.0 * (3.0 * 1.0))     1
#4                 (4.0 * 3.0)     2
#5                 (6.0 * 2.0)     3

Или же table от base R

table(df$V1)
Другие вопросы по тегам