2016-06-01 6 views
0

Я пытаюсь получить простой сюжет, показывающий продолжительность продолжительности беспокойства в течение 6 дней для двух групп. Тем не менее, я получаю вертикальные линии вместо строки, показывающей временной ход.R: ggplot: график показывает вертикальные линии вместо курса времени

Это то, что выглядит мои данные, как:

> head(alldays_dur) 
      ParticipantID Session  Day Time Worry_duration group 
1    1    2   1  71804  15  intervention 
2    1    4   1  56095  5  intervention 
3    2    2   1  36739  15  intervention 
4    2    4   1  45013  10  intervention 
5    2    5   1  51026  5  intervention 

Это структура моих данных

> str(alldays_dur) 
'data.frame': 2620 obs. of 10 variables: 
$ ParticipantID : num 113 113 113 113 113 113 113 113 113 113 ... 
$ Session  : num 9 10 11 12 14 15 16 21 22 24 ... 
$ Day   : Factor w/ 6 levels "1","2","3","4",..: 2 2 2 2 2 2 2 3 3 
$ Time   : num 37350 42862 47952 51555 61499 ... 
$ Worry_duration: num 5 5 5 5 10 0 5 5 5 5 ... 
$ group   : Factor w/ 2 levels "Intervention group",..: 1 1 1 1 1 1 

Я попытался следующий код:

p <- ggplot(alldays_dur, aes(x=Day, y=Worry_duration, group=1)) + 
    geom_line() + 
    labs(x = "Day", 
    y = "Mean worry duration in minutes per day") 
print(p) 

Однако я получить следующий график: plot

Я включил группу = 1 в код после прочтения некоторых более ранних сообщений по этой теме. Однако это не помогло мне, как я надеялся. Возможно, у вас есть полезные советы? Заранее спасибо.

Ps. Мне жаль, если сообщение неясно каким-либо образом, это мой первый раз когда-либо отправлял сообщение о stackoverflow, поэтому я еще не знаком со всеми «пост-вариантами».

+0

попробовать 'группа = group' – beetroot

+0

Спасибо. Я пробовал это раньше, и я видел некоторые изменения, но он не избавился от вертикальных линий –

+2

, тогда было бы проще помочь вам, если бы вы разместили некоторые данные (с 'dput()'), с помощью которых мы можем воспроизвести проблему. – beetroot

ответ

1

Вы должны суммировать данные первого, с ddply, например:

require(plyr) # ddply 
require(ggplot2) # ggplot 

# Creating dataset 
raw_data = data.frame(Day = sample(c(1:6),100, replace = T), 
        group = sample(c("group_1", "group_2"),100, replace = T), 
        Worry_duration = sample(seq(0,30,5), 100, replace = T)) 

# Summarize 
DF = ddply(raw_data, c("Day", "group"), summarize, 
      Worry_duration.mean = mean(Worry_duration, na.rm = T)) 

# Plot 
ggplot(DF, aes(x = Day, y = Worry_duration.mean, group = group, color = group)) + 
geom_line()+ xlab("Day") + ylab("Mean worry duration in minutes per day") 

enter image description here

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