【问题标题】:Repeated Measure data.frame and ggplot重复测量 data.frame 和 ggplot
【发布时间】:2017-11-24 16:57:51
【问题描述】:

对不起,如果这个问题对大多数人来说可能是超级愚蠢的,但我这周刚开始玩 R。 我正在尝试构建一个 data.frame,其阈值已为每个主题收集了多次(7 个不同的时间点)。 到目前为止,这就是我组织数据的方式:

library(ggplot2)

Subject <- c("1", "1", "1", "1", "1", "1", "1", "1", 
             "2","2","2","2","2","2","2","2",
             "3","3","3","3","3","3","3","3",
             "4","4","4","4","4","4","4","4")

Time <- rep(c(0,1,2,3,4,5,6,7), each = 7) 

Threshold <- c(-17, -24,    -27,    -40,    -25,    -23,    -37,    -40,
               -11, -12,    -11,    0,  -4, -7, -7, -4,
               -1,  -24,    -38,    -34,    -29,    -14,    -21,    -16,
               18,  -10,    -21,    -10,    -5, -17,    -3, -11)

Group <- c("Active","Active","Active","Active","Active","Active","Active","Active",            "Active","Active","Active","Active","Active","Active","Active","Active",           "Control","Control","Control","Control","Control","Control","Control","Control",
"sham","sham","sham","sham","sham","sham","sham","sham")

据我了解,这是必须如何安排数据以进行重复测量(长格式),但现在的问题是:例如,如何为一个特定主题选择一列?假设我想创建一个向量,其中包含第 1 天所有受试者的阈值的平均值。

此外,我如何绘制所有单个数据以及一些 (Mean, Median) 叠加到 geom_point() 图表?

非常感谢。

【问题讨论】:

    标签: r dataframe ggplot2


    【解决方案1】:

    使用 dplyr 库计算均值的数据框,然后绘制点和均值。

    library(ggplot2)
    library(dplyr)
    
    Subject <- c("1", "1", "1", "1", "1", "1", "1", "1", 
                 "2","2","2","2","2","2","2","2",
                 "3","3","3","3","3","3","3","3",
                 "4","4","4","4","4","4","4","4")
    
    Time <- rep(c(0,1,2,3,4,5,6,7), each = 4) 
    
    Threshold <- c(-17, -24,    -27,    -40,    -25,    -23,    -37,    -40,
                   -11, -12,    -11,    0,  -4, -7, -7, -4,
                   -1,  -24,    -38,    -34,    -29,    -14,    -21,    -16,
                   18,  -10,    -21,    -10,    -5, -17,    -3, -11)
    
    Group <- c("Active","Active","Active","Active","Active","Active","Active","Active",
               "Active","Active","Active","Active","Active","Active","Active","Active",
               "Control","Control","Control","Control","Control","Control","Control","Control",
               "sham","sham","sham","sham","sham","sham","sham","sham")
    
    # data frame of raw data
    df <- data.frame(Subject, Time, Threshold, Group)
    
    # data frame of means
    df_means <- group_by(df, Subject) %>% summarize(MeanThresh = mean(Threshold))
    
    ggplot(df, aes(x = Subject, y = Threshold, color = Group)) + 
      geom_point() +
      geom_point(data = df_means, aes(y = MeanThresh), size = 3, color = "black")
    

    一般来说,dplyr 将允许您执行任何您可能想要执行的数据过滤或其他操作,因此我建议您仔细阅读它。

    【讨论】:

    • 太好了,非常感谢。如果我可以问,我如何在 X 轴上绘制单独的天数,然后将每个主题作为散点图的单独点?谢谢
    • 我们在这里努力争取声誉。如果某个答案解决了问题或做出了有价值的贡献,通常会通过单击复选标记来投票并可能接受答案。
    • 对不起,我也是堆栈溢出的新手。希望我做对了:)
    • 您是要投票还是单击复选标记或两者都由您决定。赞成的意思是:“这是建设性的。”复选标记的意思是:“这回答了问题。”关于你的另一个问题,这是基本的 ggplot2 美学映射。请阅读this chapter关于美学映射,看看你能不能弄清楚。
    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2017-01-17
    • 1970-01-01
    相关资源
    最近更新 更多