基于R中的组计算字符串的出现

Calculate Occurrence of String based on Group in R

这是我的示例数据集。

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

我想计算每个歌手排名的平均值。我使用了如下所示的 "summarise" 函数。

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

在这里我想添加一个列来表示歌手出现了多少次。在此示例中,"A" 和 "B" 出现两次,而 "C" 和 "D" 出现一次。

我尝试使用 "table(unlist())"。但它在汇总功能中不起作用。

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

一个data.table解决方案

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