如何在R中按组创建频率表(附实例)

125 阅读1分钟

你可以使用以下来自dplyr包的函数,在R中按组创建一个频率表。

library(dplyr)

df %>%
  group_by(var1, var2) %>%
  summarize(Freq=n())

下面的例子展示了如何在实践中使用这种语法。

例子:按组创建频率表

假设我们在R中拥有以下数据框:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'G', 'F', 'G', 'F', 'F', 'C'))

#view data frame
df

  team position
1    A        G
2    A        G
3    A        G
4    A        F
5    B        G
6    B        F
7    B        F
8    B        C

假设我们想创建一个频率表,显示每个职位的频率,按团队分组。

我们可以用下面的语法来做:

library(dplyr)

#calculate frequency of position, grouped by team
df %>%
  group_by(team, position) %>%
  summarize(Freq=n())

# A tibble: 5 x 3
# Groups:   team [2]
  team  position  Freq
       
1 A     F            1
2 A     G            3
3 B     C            1
4 B     F            2
5 B     G            1

下面是如何解释输出结果的:

  • A队的1名球员有'F'的位置
  • A队的3名球员有'G'的位置
  • B队的1名球员的位置是'C'
  • B队2名球员的位置是 "F"
  • B队的1名球员的位置是'G'

请注意,我们可以通过改变**summaryize()**函数中的变量名称来重新命名保存频率的列。

例如,我们可以将该列改名为 "计数":

library(dplyr)

#calculate frequency of position, grouped by team
df %>%
  group_by(team, position) %>%
  summarize(count=n())

# A tibble: 5 x 3
# Groups:   team [2]
  team  position count
       
1 A     F            1
2 A     G            3
3 B     C            1
4 B     F            2
5 B     G            1

其他资源

下面的教程解释了如何在dplyr中执行其他常用函数:

如何使用dplyr计算相对频率
如何使用dplyr按组排列变量
如何使用dplyr按索引选择列