具有多个列和多个变量的图聚合

时间:2019-01-15 02:23:53

标签: r max aggregate mean

尝试从以下数据中绘制汇总数据。

  Person  Time Period Value  SMA2  SMA3  SMA4
   <chr>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
 1 A          1      1    14  NA    NA    NA  
 2 A          2      1     8  11    NA    NA  
 3 A          3      1    13  10.5  11.7  NA  
 4 A          4      1    12  12.5  11    11.8
 5 A          5      1    19  15.5  14.7  13  
 6 A          6      1     9  14    13.3  13.2
 7 A          7      2    14  NA    NA    NA  
 8 A          8      2     7  10.5  NA    NA  
 9 A          9      2    11   9    10.7  NA  
10 A         10      2    14  12.5  10.7  11.5
# ... with 26 more rows

我已经使用aggregate(DataSet[,c(4,5,6,7)], by=list(DataSet$Person), na.rm = TRUE, max)来获得以下信息:

  Group.1 Value SMA2     SMA3  SMA4
1       A    20 18.0 16.66667 15.25
2       B    20 17.0 16.66667 15.00
3       C    19 18.5 14.33333 14.50

我想在同一图上绘制人物A,B和C的每个SMA的最大值。

我还希望能够绘制每个SMA列的这些最大值的平均值。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

是这样吗?还是您在寻找不同的东西?

df <- data.frame("Group.1"=c("A","B","C"), "Value"=c(20,20,20), 
                 "SMA2"=c(18.0, 17.0, 18.5), "SMA3" =c(16.667, 16.667, 14.333), 
                 "SMA4"=c(15.25, 15.00, 14.50))

library(ggplot2)
library(tidyr)

df.g <- df %>%
  gather(SMA, Value, -Group.1)

df.g$SMA <- factor(df.g$SMA, levels=c("Value", "SMA2", "SMA3", "SMA4"))

means <- df.g %>%
  group_by(SMA) %>%
  summarise(m=mean(Value))

ggplot(df.g, aes(x=SMA, y=Value, group=Group.1, colour=Group.1)) +
  geom_line() +
  geom_point(data=means, aes(x=SMA, y=m), inherit.aes = F)

enter image description here