Возникли проблемы с отображением средств подгрупп данных - PullRequest
1 голос
/ 09 июня 2019

У меня есть данные, которые описывают серию наблюдений (уровень звука), сгруппированных по дате и часу. Я хочу построить средний уровень звука в час для каждого дня с уровнем звука по оси Y и часом по оси X и линейным графиком для каждого дня. Пример данных:

Hour Date SPL

1 18-May 107.9868

2 18-May 106.5656

1 19-May 107.4321

2 19-May 107.8993

Я поиграл с функцией group_by, но я не уверен, что смогу сделать лучше, чем эта:

spl_mean <- group_by(sound, Hour) %>%
    summarize(count = n(), Mean = mean(SPL, na.rm = T))

ggplot(data=spl_mean) + geom_line(aes(x = Hour, y = Mean, group = 1), size = 2)

Что, очевидно, просто дает среднее значение для SPL по часам, но не сохраняет подгруппу дней.

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Используйте библиотеку dplyr для вычисления среднего значения за час и день, а затем библиотеку ggplot2 для построения вашего результата.

df %>%
   group_by(Date, Hour) %>%
   summarise(SPL_mean = mean(SPL, na.rm = T) %>%
   arrange(Date, Hour) %>%
   ggplot(aes(x = Hour, y = SPL_mean, color = Date) + geom_line()
0 голосов
/ 09 июня 2019

Использование ggplot и где D - день, H - час, а V - объем.

# setup for demo
library('tidyverse')
df <- tibble(
  'D' = c(1:5,1:5),
  'H' = rep(c(1,2), each = 5),
  'V' = rnorm(10, 100, 5))

# Figure
ggplot(data = df) +
  geom_line(mapping = aes(x = H, y = V, group = D, color = D))

Это говорит о том, что нужно делать часы по x, объем по y и строить разные дни индивидуально.

Если вам нужно получить за день и час сначала средства, затем group_by, день и час, то подведите итог:

df %>% 
  group_by(D, H) %>%
  summarize(MV = mean(V)) %>%
  ggplot() +
    geom_line(mapping = aes(x = H, y = MV, group = D, color = D))

Затем сделайте это красиво с лабораторными работами, темами, шкалами и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...