如果ID相同,则创建数据的pdf图

时间:2014-06-09 14:19:55

标签: r pdf graph find

我需要一个R Studio循环,它会为具有相同ID号的变量t1t2t_all创建几个分布。数据全部列在一个表中。来自csv文件的示例数据。

DF:

ID  Date    EPOCH   t1  t2  t_all
000111  011713  1   32  NA  32
000111  011513  5   33  NA  33
000111  010813  4   32  30  32
000111  010113  1   31  NA  31
000111  012113  2   29  NA  29
000111  010313  3   NA  34  34                  
000112  010313  2   28  NA  28
000112  010313  2   38  NA  38
000112  012913  3   51  NA  51
000112  011513  5   161 NA  161
000112  012213  5   32  NA  32
000112  011113  4   33  NA  33                  
000121  011113  1   31  NA  31
000121  011713  3   30  NA  30
000121  011513  5   32  NA  32
000121  010813  4   NA  30  30
000121  010113  2   28  34  31
000121  010513  3   28  NA  28
000121  010313  1   32  NA  32              
000134  010513  5   30  30  30
000134  011113  4   28  NA  28
000134  011713  1   NA  31  31
000134  011513  3   NA  36  36
000134  010813  2   33  29  31
000134  010113  1   30  33  31
000134  010513  1   37  NA  37                  

因此循环需要能够搜索以查找具有相同ID的所有数据行,然后将它们分别绘制为直方图,pdf和cdf。

最终输出应为:

Graph 1 : ID000111 Histogram
Graph 2 : ID000111 PDF
Graph 3 : ID000111 CDF
Graph 4 : ID000112 Histogram
Graph 5 : ID000112 PDF
etc.

或所有直方图首先是所有pdf,但所有内容都需要分开。

示例Ecdf enter image description here

1 个答案:

答案 0 :(得分:1)

将ID编号视为因子,并使用for循环绘制每个因子的图形

dfunique<-unique(df$ID)
fac<-as.factor(dfunique$x)
for (f in fac) {
    temp<-subset(df,ID==f)
    if (nrow(temp)==0)next

    name<-paste(paste(f, "hist", sep="-"),"png", sep=".")
    png(name)
    #my hist code
    hist(temp$t_all,breaks=100,freq=FALSE)
    dev.off()

    #do similar for pdf, cdf

    name<-paste(paste(f, "pdf", sep="-"),"png", sep=".")
    png(name)
    #my pdf code
    plot(density(temp$t_all))
    dev.off()

    name<-paste(paste(f, "cdf", sep="-"),"png", sep=".")
    png(name)
    #my ecdf code
     plot(ecdf(temp$t_all))
    dev.off()
 }