我需要你的帮助来解决一个小问题。对于硕士项目,我需要根据年龄(以天为单位)绘制鸟类行为的频率。 不幸的是,我无法提供所有数据,因为它是机密的,但我可以给你我正在尝试做的例子:
我需要做的是看看对于给定的年龄,某种行为是否会更频繁,并将其绘制出来。
我尝试了几种不同的方法,比如我在网站上找到的这个方法: 首先,我尝试计算每个年龄段的行为频率:
df %>%
group_by(agesincetaggingdays, behaviors) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n))
这给了我:
agesincetaggingdays behaviors n freq
<dbl> <chr> <int> <dbl>
1 0 Active 5 0.000410
2 0 Feeding 49 0.0724
基本上,输出给了我所有个体中每个年龄段的行为频率。
现在我想知道如何提取这些频率并用它为每种行为绘制图表。 我再次举我之前的例子:
如果我想根据年龄查看鸟类的活跃程度,我必须提取所有年龄段活跃行为的所有频率,然后在 y 轴上绘制行为频率,在 x 轴上绘制年龄.
有办法做到这一点吗?如果您想要更精确,请不要犹豫。
谢谢你!
如果我理解正确的话,则无需提取任何内容 - 您使用的代码已经为您提供了一个数据框,可以将其传递给
ggplot()
来绘制图表。
我创建了一些虚拟数据来说明工作流程。当然,您可能想选择适合您需求的绘图类型(我使用下面的堆积面积图)。
library(tidyverse)
# create sample data
df <- tibble(
behavior = sample(letters[1:5], size = 1e6, replace = TRUE),
age = sample(0:1500, size = 1e6, replace = TRUE)
)
# compute shares
df <- df |>
count(age, behavior) |>
mutate(share = n / sum(n),
.by = age)
# plot
ggplot(df) +
geom_area(aes(age, share, fill = behavior))
创建于 2023-10-21,使用 reprex v2.0.2