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)