根据R中的Group计算字符串的出现次数

时间:2017-03-13 18:22:01

标签: r count data-manipulation

这是我的示例数据集。

Singer <- c("A","B","C","A","B","D")
Rank <- c(1,2,3,3,2,1)
data <- data_frame(Singer,Rank)

我想计算每个歌手的等级平均值。我使用&#34;总结&#34;功能如下。

summarise(group_by(data,Singer),mean.rank = mean(Rank))

在这里,我想添加一个列,表示歌手出现的次数。在这个样本中,&#34; A&#34;和&#34; B&#34;出现两次,而#34; C&#34;和&#34; D&#34;出现一次。

我尝试使用&#34;表(unlist())&#34;。但它在总结功能中不起作用。

2 个答案:

答案 0 :(得分:1)

dplyr解决方案

data
  Singer Rank
1      A    1
2      B    2
3      C    3
4      A    3
5      B    2
6      D    1
library(tidyverse)
data %>% group_by(Singer) %>% summarize(mean_rank=mean(Rank),count=n())
# A tibble: 4 × 3
  Singer mean_rank count
  <fctr>     <dbl> <int>
1      A         2     2
2      B         2     2
3      C         3     1
4      D         1     1

答案 1 :(得分:0)

data.table解决方案

   library(data.table)
   setDT(data)[, list(mean_rank = mean(Rank), count = .N), by = 'Singer']