【问题标题】:spaghetti plots for binned longitudinal data with timepoints带有时间点的分箱纵向数据的意大利面条图
【发布时间】:2013-12-05 16:26:31
【问题描述】:

我有一个包含纵向数据的数据框,看起来像这样

测试

    Names     hr1    hr2    hr3    hr4      workhr_bin
      41     80     76     70     60               7
      42     80     74     75     NA               8
      43     85     NA     60     65               6
      44     NA     NA     NA     60               3
      45     80     70     NA     NA               8
      46     NA     NA     NA     60               3

hr1hr2hr3hr4 的变量包括“姓名”列下受试者在重复的时间间隔内报告的服务时间。 “workhr_bin”列包括使用 quantile 函数获得的 bin。总共有十个箱子,1:10。

我正在尝试生成多个按垃圾箱分面的小时数意大利面图。基本上它应该产生 10 个图,一个图用于 bin 1 中的数据,另一个图用于数据 bin 2 等。

我试过了:

head(melt(test[,c(2:6)]))

但我最终得到了 workhr_bin 变量消失了,而是像这样的文件:

  variable value
1   hours1    80
2   hours1    80
3   hours1    85
4   hours1    NA
5   hours1    80
6   hours1    NA

我也试过

melt(test, id.var = "Names")

我最终得到了 workhr_bin 变量也消失了

   Names variable value
    41   hr1      80.00
    42   hr1      80.00
    43   hr1      85.00

我尝试使用 latticeggplot2,但由于某种原因,我无法将我的数据转换为正确的格式来生成代表每个 bin 内样本的意大利面条 10 个图。

基本上我需要一个数据框:

Names    variable     value    workhr_bin
    41   hr1      80.00             7
    42   hr1      80.00             8
    43   hr1      85.00             6

然后我希望能够在 x 轴上创建一个带有“变量”的 bin 多色意大利面条图(由 hr1hr2hr3hr4 组成)和相应的y 轴上的“值”。

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    你应该研究reshape2::melt的文档。

    DF <- read.table(text="    Names     hr1    hr2    hr3    hr4      workhr_bin
          41     80     76     70     60               7
          42     80     74     75     NA               8
          43     85     NA     60     65               6
          44     NA     NA     NA     60               3
          45     80     70     NA     NA               8
          46     NA     NA     NA     60               3", header=TRUE)
    
    library(reshape2)
    DF_melt <- melt(DF, id.vars=c("Names", "workhr_bin"))
    #make time numeric
    DF_melt$variable <- as.numeric(gsub("hr", "", DF_melt$variable))
    
    library(ggplot2)
    p <- ggplot(DF_melt, aes(x=variable, y=value, color=factor(Names))) +
      geom_line() +
      geom_point() +
      facet_grid(workhr_bin ~ .)
    
    print(p)
    

    (这会导致来自 ggplot2 的警告,因为没有足够的数据。我假设您的真实数据集不会有这个问题。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      相关资源
      最近更新 更多