如何使用 dplyr 计算不同值(附示例)


您可以使用以下任意方法使用dplyrn_distinct()函数来计算 R 数据框中不同值的数量:

方法1:计算列中不同值的数量

 n_distinct(df$column_name)

方法2:计算所有列中的不同值

 sapply(df, function (x) n_distinct(x))

方法3:按组统计不同值

 df %>%
group_by (grouping_column) %>%
summarize (count_distinct = n_distinct(values_column))

以下示例展示了如何在实践中使用以下数据框使用每种方法:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(6, 6, 8, 10, 9, 9, 12, 12),
                 assists=c(3, 6, 4, 2, 4, 5, 5, 9))

#view data frame
df

  team points assists
1 to 6 3
2 to 6 6
3 to 8 4
4 to 10 2
5 B 9 4
6 B 9 5
7 B 12 5
8 B 12 9

方法1:计算列中不同值的数量

以下代码展示了如何使用n_distinct()来计算 ‘team’ 列中不同值的数量:

 #count distinct values in 'team' column
n_distinct(df$team)

[1] 2

“团队”列中有2 个不同的值。

方法2:计算所有列中的不同值

下面的代码展示了如何使用sapply()n_distinct()函数来统计数据框每列中不同值的数量:

 #count distinct values in every column
sapply(df, function (x) n_distinct(x))

   team points assists 
      2 5 6

从结果我们可以看出:

  • ‘team’ 列中有2 个不同的值
  • “points”栏中有5个不同的值
  • “helps”栏中有6个不同的值

方法3:按组统计不同值

下面的代码展示了如何使用n_distinct()函数来统计每组的不同值的数量:

 #count distinct 'points' values by 'team'
df %>%
  group_by (team) %>%
  summarize (distinct_points = n_distinct(points))

# A tibble: 2 x 2
  team distinct_points 
1 to 3
2 B 2

从结果我们可以看出:

  • A 队有3 个不同的分值。
  • B队有2个独立的分值。

其他资源

以下教程解释了如何使用 dplyr 执行其他常见操作:

如何使用 dplyr 对值重新编码
如何在 dplyr 中用零替换 NA
如何使用 dplyr 按组对变量进行排序
如何使用 dplyr 按组选择第一行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注