R mean()和sum()/n()结果不匹配
我正在通过R进行数据科学练习来自学R,当我试图为相同的问题找到不同的解决方案时,我遇到了一个让我困惑的结果 我加载了以下包:R mean()和sum()/n()结果不匹配,r,R,我正在通过R进行数据科学练习来自学R,当我试图为相同的问题找到不同的解决方案时,我遇到了一个让我困惑的结果 我加载了以下包: library(nycflights13) library(tidyverse) 问题是:看看每天航班取消的数量数据集。有模式吗?取消航班的比例与平均延误有关吗 我找到了一个很好地描述模式的解决方案: flights %>% group_by(year, month, day) %>% summarize(cancelled = mean(is.na(a
library(nycflights13)
library(tidyverse)
问题是:看看每天航班取消的数量数据集。有模式吗?取消航班的比例与平均延误有关吗
我找到了一个很好地描述模式的解决方案:
flights %>%
group_by(year, month, day) %>%
summarize(cancelled = mean(is.na(arr_delay)) , avg_delay = mean(arr_delay, na.rm = TRUE)) %>%
ggplot(mapping = aes(x = avg_delay, y = cancelled)) +
geom_point(alpha=0.5) +
geom_smooth(se=FALSE)
以下代码与取消航班的sum/n完全相同:
flights %>%
group_by(year, month, day) %>%
summarize(cancelled = sum(is.na(arr_delay))/n() , avg_delay = mean(arr_delay, na.rm = TRUE)) %>%
ggplot(mapping = aes(x = avg_delay, y = cancelled)) +
geom_point(alpha=0.5) +
geom_smooth(se=FALSE)
但当我对avg_延迟执行相同操作时,画面会发生变化:
flights %>%
group_by(year, month, day) %>%
summarize(cancelled = sum(is.na(arr_delay))/n() , avg_delay = sum(arr_delay, na.rm = TRUE)/n()) %>%
ggplot(mapping = aes(x = avg_delay, y = cancelled)) +
geom_point(alpha=0.5) +
geom_smooth(se=FALSE)
我本以为所有表达式都会给出相同的结果。我的想法是,有时会考虑缺失值,有时不会,因此图片会发生变化,但我缺乏测试差异的R知识。
有人能告诉我我需要做些什么来弄清差异的来源吗? < P>这是因为用N.RM=真值只考虑那些不是NA的行。所以长度不等于n
例如,在上一个示例中,使用
avg_delay = sum(arr_delay, na.rm = TRUE)/sum(!is.na(arr_delay))
将产生与上述两种方法完全相同的结果我尝试了您建议的方法,这确实证实了我已经预期的结果。我只是没有想到更换n。