使用 dplyr return NA 两次汇总同一列

Summarising same column twice with dplyr return NA

考虑以下 R 中的最小工作示例:

library(tidyverse)

df <- data_frame(
  colour=c('red', 'red', 'blue', 'blue'),
  value=c(1, 1, 2, 2)
)

df %>%
  group_by(colour) %>%
  summarise(
    value=mean(value),
    value.sd=sd(value),
  )

输出为

# A tibble: 2 × 3
  colour value value.sd
  <chr>  <dbl>    <dbl>
1 blue       2       NA
2 red        1       NA

当预期输出为

# A tibble: 2 × 3
  colour      value value.sd
  <chr>       <dbl>    <dbl>
1 blue            2        0
2 red             1        0

我知道如何解决这个问题。因为以下代码将提供预期的输出:

df %>%
  group_by(colour) %>%
  summarise(
    value.mean=mean(value),
    value.sd=sd(value),
  )

我的问题是:我在第一个代码示例中错误地使用了 R/dplyr 还是 dplyr 中的错误?

当我 运行 你编写代码时,我收到一条警告,提示 data_frame 已被弃用。

这个有效

df <- tibble(
    colour=c('red', 'red', 'blue', 'blue'),
    value=c(1, 1, 2, 2)
)

df %>%
    group_by(colour) %>%
    summarise(
        value.mean = mean(value),
        value.sd=sd(value)
    )
# A tibble: 2 × 3
  colour value.mean value.sd
  <chr>       <dbl>    <dbl>
1 blue            2        0
2 red             1        0

所以我建议尝试这样做,因为可能存在已修复的错误。