这是我的示例数据集。
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;。但它在总结功能中不起作用。
答案 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']