R:ggplot:plot显示垂直线而不是时间过程

时间:2016-06-01 08:56:09

标签: r ggplot2 dataframe

我试图得到一个简单的情节,显示两组的担忧持续时间超过6天。但是,我得到垂直线而不是显示时间过程的线。

这就是我的数据:

> 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

在阅读了有关此主题的一些早期帖子后,我在代码中包含了group = 1。但是,它并没有像我希望的那样帮助我。 你可能对我有一些有用的提示吗?先感谢您。

聚苯乙烯。我很抱歉,如果帖子不清楚,这是我第一次在stackoverflow上发帖,所以我对所有'后期选项'还不太熟悉。

1 个答案:

答案 0 :(得分: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