使用R,我试图获得两个合计函数max,并对其进行计数,并针对数据帧中存在的值,并基于其他两列对它们进行分组。
A = c('A', 'A', 'A', 'B', 'B', 'B')
B = c('R1', 'R2', 'R1', 'R1', 'R2', 'R1')
C = c(11, 2, 8, 11, 11, 17)
d = data.frame (A, B, C)
sqldf('select A, B, count(distinct(C)) as UNIQUE_COUNT from d group by A, B')
正确的输出
A B UNIQUE_COUNT
1 A R1 2
2 A R2 1
3 B R1 2
4 B R2 1
我能够使用R中的sqldf包使用普通的sql来做到这一点。我试图使用本机R来避免sql来做到这一点。我尝试了下面给出的以下查询,但是给出了错误的输出。
错误的查询
d %>%
group_by(A,B)%>%
summarise(UNIQUE_COUNT = n_distinct(C))
错误的输出
UNIQUE_COUNT
1 4
关于我在做什么错的任何建议?
答案 0 :(得分:2)
您可能同时运行plyr
-package和dplyr
-package。它们都包含一个名为summarise
的函数。如果不是plyr,则可能是另一个包含名为summarise
的函数的软件包。
运行?summarise
,检查系统上可用的summarise
功能。
确保您使用的是dplyr软件包中的summarise()
!
library( dplyr )
d %>%
dplyr::group_by(A,B)%>%
dplyr::summarise(UNIQUE_COUNT = n_distinct(C)) # <-- dplyr
# # A tibble: 4 x 3
# # Groups: A [?]
# A B UNIQUE_COUNT
# <fct> <fct> <int>
# 1 A R1 2
# 2 A R2 1
# 3 B R1 2
# 4 B R2 1
d %>%
dplyr::group_by(A,B)%>%
plyr::summarise(UNIQUE_COUNT = n_distinct(C)) # <-- plyr
# UNIQUE_COUNT
# 1 4