gpt4 book ai didi

r - 为 geom_area 添加缺失的 data.frame 值(ggplot2)

转载 作者:行者123 更新时间:2023-12-01 07:43:55 25 4
gpt4 key购买 nike

我想从汇总数据集创建 ggplot2::geom_area 图,这些数据集在某些数据周期(月)中缺少某些数据类别,例如:

require(ggplot2)
set.seed(1)
d = data.frame(x = rep(1:10,each=4), y = rnorm(40,10), cat=rep(c('A','B','C','D'), 10))
(d = d[-sample(1:40,10),]) # remove some rows
ggplot(d, aes(x, y, fill=cat)) + geom_area()

enter image description here

Ggplot 的堆积面积图对缺失值 react 不佳,因此我们似乎需要向 data.frame 添加零条目。我能想到的最好方法(除非有更好的建议?)是 reshape2::dcast 它,将 NA 转换为零并重新整形。但我想不出正确的公式。感谢了解 reshape(2) 的人的帮助。

require(reshape2)
dcast(d, x ~ cat) # right direction but missing the data
x A B C D
1 1 A B C D
2 2 <NA> B C <NA>
3 3 A B C D
4 4 <NA> B C <NA>
5 5 A <NA> C D
6 6 A B C D
7 7 <NA> B C <NA>
8 8 A B C D
9 9 <NA> B <NA> D
10 10 A B <NA> D

最佳答案

# Expand the data.frame
p.data <- merge(d,
expand.grid(x=unique(d$x),
cat=unique(d$cat),
stringsAsFactors=F),
all.y=T)

# Fill NA values with zeros
p.data$y[is.na(p.data$y)] <- 0

# Plot the graph
ggplot(p.data, aes(x, y, fill=cat)) +
geom_area()

enter image description here

关于r - 为 geom_area 添加缺失的 data.frame 值(ggplot2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com