问题描述
假设您有一个表,其中 Result 可以在同一天取值 {a,b,c}。如何绘制 a、b 和 c 的频率随时间的移动平均值?
示例:
Date Result
2018-11-23 a
2018-11-23 a
2018-11-23 b
2018-11-24 c
2018-11-24 b
2018-11-25 c
2018-11-25 c
2018-11-25 b
2018-11-26 c
2018-11-26 b
2018-11-26 a
...
解决方法
我不确定您到底想达到什么目的。但以下内容为您提供了每个日期每个字母的计数。
library(dplyr)
library(tidyr)
library(ggplot2)
x <- structure(list(date = structure(c(17858,17858,17859,17860,17861,17861),class = "Date"),letter = c("a","a","b","c","a")),class = "data.frame",row.names = c(NA,-11L))
agg_x <- x %>%
group_by(date,letter) %>%
summarize(count = n()) %>%
ungroup()
agg_x %>%
spread(letter,count)
#> # A tibble: 4 x 4
#> date a b c
#> <date> <int> <int> <int>
#> 1 2018-11-23 2 1 NA
#> 2 2018-11-24 NA 1 1
#> 3 2018-11-25 NA 1 2
#> 4 2018-11-26 1 1 1
ggplot(data = agg_x,aes(x = date,y = count,color = letter)) +
geom_point() +
geom_line()
由 reprex package (v2.0.0) 于 2021 年 5 月 16 日创建