在两列上分组并使用 R 计算不同的值
Grouping on two columns and counting distinct values using R
使用 R,我试图获得两个聚合函数 max 和 count distinct 以及数据框中存在的值,并根据其他两个列对它们进行分组。
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
对我做错了什么有什么建议吗?
你可能同时是 运行 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
使用 R,我试图获得两个聚合函数 max 和 count distinct 以及数据框中存在的值,并根据其他两个列对它们进行分组。
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
对我做错了什么有什么建议吗?
你可能同时是 运行 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