R - графирование подгрупп

У меня возникают трудности с выяснением того, как построить график подгруппы в R с течением времени. Данные ниже. По сути, я бы хотел изобразить, как кофеин влияет на мои результаты теста с течением времени, но я хочу сгруппировать их по дням.

Я беру первый тест (всегда перед кофеином), чтобы определить исходные результаты за день, а затем посмотреть, каков мой результат во втором тесте, иногда по кофеину, а другие нет. Если я беру кофеин, это помечено "yes" на пост-кофеиновой переменной.

Итак, каков наилучший способ сгруппировать переменную к одному и тому же дню, но разрешить различия во времени суток и по факту наличия у него пост-кофеина?

Кажется, это будет что-то вроде

x <- group_by (DATA, Post Caffaine)
ggplot(aes(x, score) data)

Я мог бы сделать отдельные переменные для изменения результатов теста в течение одного дня, но я думаю, что лучше делать это в объектах. Я в тупике. Спасибо за помощь, и я надеюсь, что это было ясно.

Post Caffeine   Score     Time/Date
yes        10   3/17/2014 17:58:28
no          9   3/17/2014 23:55:47
no          7   3/18/2014 18:50:50
no         10   3/18/2014 23:09:03

1 ответ

Решение
library(lubridate)

# For illustration, I've added a few additional observations plus a new 
# grouping variable
dat = read.table(text="
                 Post_Caffeine   Score     Date Time Pairs
                 yes        10   3/17/2014 18:25:28   1
                 yes        9   3/17/2014 17:38:28   1
                 yes        8   3/17/2014 12:58:28    2
                 yes        9   3/17/2014 09:58:28    3
                 no          9   3/17/2014 16:55:47   1
                 no          9   3/17/2014 15:25:47   1
                 no          7   3/17/2014 11:55:47   2
                 no          8   3/17/2014 7:55:47    3
                 no          7   3/18/2014 18:50:50   4
                 no         8   3/18/2014 23:09:03    5
                 yes          8   3/18/2014 19:50:50  4
                 yes         10   3/18/2014 24:09:03  5", header=TRUE)

dat$date_time = mdy_hms(paste(dat$Date, dat$Time)) 
dat$Date = mdy(dat$Date)
dat$Time = hms(dat$Time)

# This will plot each individual measurement and give you separate lines 
# for Post_Caffeine="yes" and Post_Caffeine="no"
ggplot(dat, aes(hour(Time)+minute(Time)/60, Score, colour=Post_Caffeine)) + 
  geom_point() + geom_line() + 
  scale_y_continuous(limits=c(0,10)) + 
  facet_wrap(~ Date) +
  xlab("Time (24-hour clock)")

# When grouping by the new "Pairs" variable, you get a separate set of points/lines 
# for each value of Pairs. I originally took each "pair" to be one pre- and one 
# post-test, but of course there can be several of each for a given value of 
# Pairs, as the graph shows
ggplot(dat, aes(hour(Time)+minute(Time)/60, Score, 
                group=Pairs, colour=Post_Caffeine)) + 
  geom_line(colour=colors()[76]) +
  geom_point(size=2.5) +  
  scale_y_continuous(limits=c(0,10)) +
  facet_wrap(~ Date) +
  xlab("Time (24-hour clock)")

Вот как выглядят эти два графика соответственно:

Другие вопросы по тегам