基于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']
这是我的示例数据集。
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']