[当数据帧中存在列名“ n”时,使用dplyr :: tally`

问题描述 投票:1回答:1

我正在使用dplyr的开发版本,并且在数据框中存在列名dplyr::tally时正在努力使用"n"

  • dplyr 0.8.5(CRAN版本)

这不是先前版本中的问题。

library(tidyverse)

mtcars %>% dplyr::group_by(am) %>% tally(., wt = NULL, name = "n_obs")
#> # A tibble: 2 x 2
#>      am n_obs
#>   <dbl> <int>
#> 1     0    19
#> 2     1    13

df <- dplyr::rename(.data = mtcars, n = wt)

df %>% dplyr::group_by(am) %>% tally(., wt = NULL, name = "n_obs")
#> # A tibble: 2 x 2
#>      am n_obs
#>   <dbl> <int>
#> 1     0    19
#> 2     1    13
  • dplyr 1.0.0(GitHub版本)

但是它不再产生正确的输出。

library(tidyverse)
options(tibble.width = Inf)

mtcars %>% dplyr::group_by(am) %>% tally(., wt = NULL, name = "n_obs")
#> # A tibble: 2 x 2
#>      am n_obs
#> * <dbl> <int>
#> 1     0    19
#> 2     1    13

df <- dplyr::rename(.data = mtcars, n = wt)

df %>% dplyr::group_by(am) %>% tally(., wt = NULL, name = "n_obs")
#> Using `n` as weighting variable
#> # A tibble: 2 x 2
#>      am n_obs
#> * <dbl> <dbl>
#> 1     0  71.6
#> 2     1  31.3

我是在做错什么还是这是错误?

r dplyr tidyverse
1个回答
0
投票

查看文档(如注释中所指出),以前的工作流似乎无法恢复。

所以这是一种解决方法:

library(tidyverse)

mtcars %>% group_by(am) %>% summarize(n = dplyr::n())
#> # A tibble: 2 x 2
#>      am     n
#> * <dbl> <int>
#> 1     0    19
#> 2     1    13

df <- dplyr::rename(.data = mtcars, n = wt)

df %>% dplyr::group_by(am) %>% summarize(n = dplyr::n())
#> # A tibble: 2 x 2
#>      am     n
#> * <dbl> <int>
#> 1     0    19
#> 2     1    13

reprex package(v0.3.0)在2020-03-24创建

© www.soinside.com 2019 - 2024. All rights reserved.