library(dplyr)
Run Code Online (Sandbox Code Playgroud)
distinct(mtcars, mpg) 显示mtcars中唯一出现的mpg类.
n_distinct(mtcars, mpg)计算它们并显示正确的计数32.
distinct(mtcars, cyl) 显示mtcars中唯一出现的柱面类.
n_distinct(mtcars, cyl)产生错误.为什么它不像上面的mpg例子那样工作?我得到了这个错误的错误...对象cyl在mtcars数据框中,我向你保证.
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
如果您希望计算唯一值的数量mtcars$cyl和mtcars$mpg,然后只需使用:
dplyr::n_distinct(mtcars$cyl) # 3
dplyr::n_distinct(mtcars$mpg) # 25
Run Code Online (Sandbox Code Playgroud)
一个棘手的!
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |