我有一个包含一列的数据框。有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
修改: Tim Biegeleisen指出,“Distinct”不是一个功能,因此不需要括号。因此,将 DISTINCT(V1)更新为DISTINCT V1
答案 0 :(得分:4)
我们不需要distinct关键字,因为我们正在使用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
答案 1 :(得分:1)
我们可以使用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)