如何使用dplyr计算计数?

时间:2014-11-04 20:14:34

标签: r count dplyr

假设我们有数据框

df <- data.frame(x = c("a", "a", "b", "a", "c"))

使用dplyr计数,我们得到

df %>% count(x)

  x n
1 a 3
2 b 1
3 c 1

我现在想对结果n列进行计数。如果n列被命名为m,我正在寻找的结果是

  m n
1 1 2
2 3 1

如何使用dplyr完成此操作?

非常感谢!

6 个答案:

答案 0 :(得分:4)

dplyr似乎与count(n)有关。

例如:

d <- data.frame(n = sample(1:2, 10, TRUE), x = 1:10)
d %>% count(n)

解决方法是重命名n

df %>% # using data defined in question
  count(x) %>%
  rename(m = n) %>% 
  count(m)

答案 1 :(得分:3)

编辑:我错了。没有dplyr的最新版本,所以我没有count功能。

使用dplyr计算方法是使用n()在您的示例中,您将执行以下操作以获取第一个计数:

df <- data.frame(x = c("a", "a", "b", "a", "c"))

df %>% group_by(x) %>% summarise(count=n())

然后,如果您想计算特定计数的出现次数,您可以这样做:

 df %>% group_by(x) %>% summarise(count=n()) %>% group_by(count) %>% summarise(newCount=n())

这是dplyr方式。

答案 2 :(得分:1)

sum((df %>% count(x))$n)   
##[1] 5

答案 3 :(得分:1)

如果您愿意尝试使用data.table,那可能会非常直接。

df <- data.frame(x = c("a", "a", "b", "a", "c"))
library(data.table)
setDT(df)[, .N, by=x][, list(count_of_N=.N), by=N]
#    N count_of_N
# 1: 3          1
# 2: 1          2

答案 4 :(得分:0)

如果你想数:

df %>% count(x) %>% summarise(length(n))
#  length(n)
#1         3

如果你想要总和:

df %>% count(x) %>% summarise(sum(n))
#  sum(n)
#1      5

答案 5 :(得分:0)

它不是纯粹的plyr,但这可能有效:

countr<-function(x){data.frame(table(x))}
t<-count(df,x)
countr(t[,2])