2016-01-06 2 views
0

У меня довольно большой фрейм данных в R, хранящийся в длинной форме. Он содержит данные о температуре тела, собранные у 40 разных особей с интервалом в 10 секунд, в течение 16 дней. Люди подвергаются воздействию условий (cond1 и cond2). Это по существу выглядит следующим образом:Визуализация данных временных рядов

ID Cond1 Cond2 Day ToD Temp 
1  A  B 1 18.0 37.1 
1  A  B 1 18.3 37.2 
1  A  B 2 18.6 37.5 
2  B  A 1 18.0 37.0 
2  B  A 1 18.3 36.9 
2  B  A 2 18.6 36.9 
3  A  A 1 18.0 36.8 
3  A  A 1 18.3 36.7 
3  A  A 2 18.6 36.7 
... 

Я хочу создать четыре отдельных участков линий для каждой комбинации условий (AB, BA, AA, BB), который показывает среднюю температуру в течение долгого времени (день 1-16).

p.s. ToD означает время суток. Не уверен, что мне нужно предоставить его, чтобы создать сюжет.

До сих пор я пытался определить набор данных в виде временных рядов, делая

ts <- ts(data=dataset$Temp, start=1, end=16, frequency=8640) 
plot(ts) 

Это возвращает участок Temp, но я не могу понять, как определить значение состояния для разрушения данных.

Редактировать: По существу, мне нужен сюжет, который выглядит так: 1, но по одному для каждой группы отдельно и с использованием средних значений темпа. Этот график предназначен только для одного человека в одном условии, и я хочу, чтобы он показывал среднее значение для всех лиц в одном и том же состоянии.

ответ

1

Вы можете использовать summarise и group_by, чтобы сгруппировать данные по условию, а затем построить его. Это то, что вы ищете?

library(dplyr) 
## I created a dataframe df that looks like this: 
    ID Cond1 Cond2 Day ToD Temp 
1 1  A  B 1 18.0 37.1 
2 1  A  B 1 18.3 37.2 
3 1  A  B 2 18.6 37.5 
4 2  B  A 1 18.0 37.0 
5 2  B  A 1 18.3 36.9 
6 2  B  A 2 18.6 36.9 
7 3  A  A 1 18.0 36.8 
8 3  A  A 1 18.3 36.7 
9 3  A  A 2 18.6 36.7 
df$Cond <- paste0(df$Cond1, df$Cond2) 
d <- summarise(group_by(df, Cond, Day), t = mean(Temp)) 
ggplot(d, aes(Day, t, color = Cond)) + geom_line() 

что приводит: enter image description here

+0

Спасибо за вашу помощь! Но это не совсем то, что я ищу. Мне не нужен средний для каждого дня, но средний темп всех лиц в группе, для каждого момента времени (ToD). Поэтому, чтобы принять среднее значение Temp всех идентификаторов в Cond AA, в День 1, ToD 18.00, затем в 18.01 и т. Д. (См. Мое редактирование в исходном сообщении). – user5751554

+0

Тогда вам просто нужно добавить ToD в оператор 'group_by', чтобы он« суммировал (group_by (df, Cond, Date, ToD), t = mean (Temp)) ». Это даст среднюю температуру всех точек данных для каждого условия, даты и времени суток. Затем вы можете использовать что-то вроде 'facet_grid (Cond ~.)', Чтобы получить отдельный график для каждого условия. – ytk

Смежные вопросы