Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R mean()和sum()/n()结果不匹配_R - Fatal编程技术网

R mean()和sum()/n()结果不匹配

R mean()和sum()/n()结果不匹配,r,R,我正在通过R进行数据科学练习来自学R,当我试图为相同的问题找到不同的解决方案时,我遇到了一个让我困惑的结果 我加载了以下包: library(nycflights13) library(tidyverse) 问题是:看看每天航班取消的数量数据集。有模式吗?取消航班的比例与平均延误有关吗 我找到了一个很好地描述模式的解决方案: flights %>% group_by(year, month, day) %>% summarize(cancelled = mean(is.na(a

我正在通过R进行数据科学练习来自学R,当我试图为相同的问题找到不同的解决方案时,我遇到了一个让我困惑的结果

我加载了以下包:

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。