你可以使用下面的基本语法在R语言的数据框中添加一个 "计数 "列:
df %>%
group_by(var1) %>%
mutate(var1_count = n())
这种特殊的语法在数据框中添加了一个名为var1_count的列,其中包含了名为var1的列中数值的计数。
下面的例子展示了如何在实践中使用这种语法。
例子:在R中添加计数列
假设我们在R中拥有以下数据框,其中包含各种篮球运动员的信息:
#define data frama
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
position=c('G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'),
points=c(18, 22, 19, 14, 14, 11, 20, 28))
#view data frame
df
team position points
1 A G 18
2 A F 22
3 A F 19
4 B F 14
5 B G 14
6 B G 11
7 B F 20
8 B F 28
我们可以使用下面的代码来添加一个名为team_count的列,其中包含每个球队的计数:
library(dplyr)
#add column that shows total count of each team
df %>%
group_by(team) %>%
mutate(team_count = n())
# A tibble: 8 x 4
# Groups: team [2]
team position points team_count
1 A G 18 3
2 A F 22 3
3 A F 19 3
4 B F 14 5
5 B G 14 5
6 B G 11 5
7 B F 20 5
8 B F 28 5
有3行的球队值为A,有5行的球队值为B。
因此:
- 对于团队等于A的每一行,team_count列的值是3。
- 对于每一行的球队等于B,team_count列中的值是5。
你也可以添加一个 "计数 "列,按多个变量分组。
例如,下面的代码显示了如何添加一个按球队和位置变量分组的 "计数 "列:
library(dplyr)
#add column that shows total count of each team and position
df %>%
group_by(team, position) %>%
mutate(team_pos_count = n())
# A tibble: 8 x 4
# Groups: team, position [4]
team position points team_pos_count
1 A G 18 1
2 A F 22 2
3 A F 19 2
4 B F 14 3
5 B G 14 2
6 B G 11 2
7 B F 20 3
8 B F 28 3
从输出中我们可以看到:
- 有1行在球队列中包含A,在位置列中包含G。
- 有2行在球队列中包含A,在位置列中包含F。
- 有3行在球队列中包含B,在位置列中包含F。
- 有2行在团队列中包含B,在位置列中包含F。