r - ggplot2 中的 Summarise() 和 group_by() 似乎遗漏了我的数据框中的数据行
问题描述
最近我发布了一个关于如何绘制 y 轴是分类变量的比例的线和点图的问题。我还发布了一些示例数据,并收到了适用于我发布的数据集的回复,代码如下:
library(dplyr)
library(ggplot2)
df %>%
group_by(age) %>%
summarise(p = mean(result == 'y')) %>%
ggplot(aes(x = age, y = p)) +
geom_point() +
geom_line()
它适用于我发布的数据集,起初似乎为更大数据集(读取为 .csv 并分配了名称'df'
)中相同类型的数据生成图表,如下所示:
result age
n 37
n NA
n 40
n NA
n NA
n 30
p 23
n 40
n 34
n 28
c 40
n 24
n NA
p 27
c 40
n NA
n 28
n 40
n NA
p 23
n NA
n 28
p 28
n NA
n 40
p NA
n 28
n NA
n 40
p 20
n NA
n NA
n NA
n 30
n 24
n NA
c NA
n 30
n NA
n NA
NA NA
n NA
n NA
NA NA
n NA
n 30
p 27
n NA
n 31
n 28
n NA
n NA
n NA
n 28
n 31
n NA
n 24
c 18
p 30
n NA
n NA
n 31
n 30
n NA
n 31
p 27
n 24
n 28
n 27
n NA
p 26
n 31
n 24
NA 23
n NA
n NA
n NA
n NA
n NA
n NA
n NA
n NA
n NA
n NA
n 28
n 26
n 32
n NA
c NA
n 31
n NA
p 32
n NA
n NA
p 26
n NA
n 29
n NA
n 31
n 29
n NA
n NA
n NA
n 31
p 21
n 33
n 29
n NA
p NA
n 29
n NA
n NA
p 22
n 28
n 29
n 31
p 27
p 28
n 28
n 27
n NA
当我运行这段代码
df %>%
group_by(age) %>%
summarise(prop= mean(result == 'p')) %>%
ggplot(aes(x = age, y = prop)) +
geom_point() +
geom_line() +
scale_x_continuous(breaks = seq(1, 40, 1))
在此数据的数据框中,我得到以下图表:
但是,我可以在图表中看到我的数据中的行丢失了。图中没有 23 岁的数据,但在我的数据中,这个年龄有一个“p”。此外,如果我在 .csv 中添加新行,其中包含 'result' 中的 p 个条目与 'age' 的 23 个条目在同一行中,然后更新 R 中的数据框并重新绘制图形,没有任何反应。而如果我做同样的事情,输入 'p's 表示 18,图中 18 处的 p 比例确实会增加。
任何人都可以弄清楚发生了什么事吗?提前谢谢了!
解决方案
您尚未处理NA
数据中的 s。考虑这个例子 -
mean(c(1, 3, 4))
#[1] 2.666667
mean(c(1, 3, 4, NA))
#[1] NA
mean(c(1, 3, 4, NA), na.rm = TRUE)
#[1] 2.666667
忽略NA
带有 的值na.rm = TRUE
。
library(dplyr)
library(ggplot2)
df %>%
group_by(age) %>%
summarise(p = mean(result == 'p', na.rm = TRUE)) %>%
ggplot(aes(x = age, y = p)) +
geom_point() +
geom_line()
推荐阅读
- javascript - 如何在 React Native 的类 Component 中将函数作为道具传递和执行?
- flutter - 如何从 Flutter 中使用 Firestore 中的唯一文档 ID 进行查询?
- oauth - 有没有办法为 botframework 中的 SingleSignOn (SSO) 生成令牌以访问同一租户下的多个资源
- c# - 如果 nuget 已作为 nuget 依赖项安装,但它在您的项目中不可见,如何安装它?
- angular - 如何在 Angular 中进行基于角色的路由?
- javascript - 无法正确渲染项目卡。Reactjs Gatsbyjs Graphql
- javascript - 有没有办法在选项(复选框)打开时单击多个复选框,而当它关闭时,您一次只能选择一个?
- java - 类构造函数中的抽象方法
- apache-spark - 如何使用 Java/Scala 将 kafka 消费者输出附加到 HDFS 中的文件(镶木地板)?
- c# - 带有 ORACLE 查询的 OleDbCommand 不更新表