library(dplyr)


distinct(mtcars, mpg)显示mtcars中mpg类的唯一出现。

n_distinct(mtcars, mpg)对它们进行计数并显示正确的计数32

distinct(mtcars, cyl)显示mtcars中柱面类的唯一出现。

n_distinct(mtcars, cyl)产生错误。为什么它不像上面的mpg示例那样起作用?我得到这个错误的错误...对象cyl在mtcars数据框中,我向您保证。


Error in n_distinct_multi(list(...), na.rm) : object 'cyl' not found

最佳答案

dplyr::n_distinct()函数不是像mutate()filter()等的表动词。它的...参数应该是“值的向量”(根据官方文档)。

所以当您说dplyr::n_distinct(mtcars, mpg)时,实际上是什么情况
是第一个参数mtcars的唯一值正在计算。

由于它具有32个不同的行,因此值为32。在最后一个示例中,您
提供,因为没有被称为cyl的对象,所以无法识别cyl-识别mpg的原因是mpg引用了
数据集ggplot2::mpg,而不是同名的mtcars列!

要了解我的意思,请运行以下命令:

dplyr::n_distinct(mtcars)                # 32
dplyr::n_distinct(ggplot2::mpg)          # 225
dplyr::n_distinct(mtcars, mpg)           # 32
dplyr::n_distinct(mtcars, ggplot2::mpg)  # 32


如果要计算mtcars$cylmtcars$mpg中唯一值的数量,
然后只需使用:

dplyr::n_distinct(mtcars$cyl) # 3
dplyr::n_distinct(mtcars$mpg) # 25


一个棘手的人!

关于r - R计数的差异数不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48612389/

10-12 19:44