使用 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
所以我建议尝试这样做,因为可能存在已修复的错误。
考虑以下 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
所以我建议尝试这样做,因为可能存在已修复的错误。