我需要一个R Studio循环,它会为具有相同ID号的变量t1
,t2
和t_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
答案 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()
}