如何在R数据框中添加新列,其计数基于因子列?

在进行数据分析时,通常我们必须处理因子数据,并且我们可能希望找到因子水平和其他变量组合的频率或计数。这有助于我们在因子水平之内和之间进行比较。因此,我们可以添加一个新列作为计数来找到所需的频率,这可以通过使用group_by和dplyr软件包的mutate函数来完成。

示例

请看以下数据帧-

> Group<-rep(c("A","B","C","D","E"),times=10)
> Rating<-sample(1:10,50,replace=TRUE)
> df<-data.frame(Group,Rating)
> head(df,20)

输出结果

   Group Rating
1    A    1
2    B    6
3    C    2
4    D    4
5    E    9
6    A    3
7    B    5
8    C    7
9    D    1
10   E    9
11   A    9
12   B    8
13   C    9
14   D    2
15   E    6
16   A    2
17   B    2
18   C    2
19   D    2
20   E    2
> tail(df,20)

输出结果

   Group Rating
31    A    1
32    B    7
33    C    10
34    D    8
35    E    6
36    A    8
37    B    4
38    C    4
39    D    10
40    E    4
41    A    6
42    B    4
43    C    3
44    D    7
45    E    5
46    A    1
47    B    6
48    C    7
49    D    1
50    E    6

加载dplyr软件包并找到计数-

> library(dplyr)
> df_with_count<-df%>%group_by(Group,Rating)%>%mutate(count=n())
> head(df_with_count,20)
# A tibble: 20 x 3
# Groups: Group, Rating [17]

输出结果

Group Rating count
 <fct> <int> <int>
1 A      1    4
2 B      6    3
3 C      2    3
4 D      4    1
5 E      9    2
6 A      3    1
7 B      5    1
8 C      7    2
9 D      1    3
10 E     9    2
11 A     9    1
12 B     8    1
13 C     9    1
14 D     2    3
15 E     6    3
16 A     2    1
17 B     2    1
18 C     2    3
19 D     2    3
20 E     2    1
> tail(df_with_count,20)
# A tibble: 20 x 3
# Groups: Group, Rating [17]

输出结果

Group Rating count
 <fct> <int> <int>
1 A      1    4
2 B      7    1
3 C      10   2
4 D      8    1
5 E      6    3
6 A      8    1
7 B      4    2
8 C      4    1
9 D      10   1
10 E      4   1
11 A      6    1
12 B      4    2
13 C     3     1
14 D     7     1
15 E     5     2
16 A     1     4
17 B     6     3
18 C     7     2
19 D     1     3
20 E     6     3