簡體   English   中英

如何以置信區間繪制寬數據文件

[英]How to plot a wide data file with confidence intervals

樣本數據:

DF <- data.frame("TIME"=c(1:10), 
"COEF1"=c(0.15,0.93,0.80,0.59,0.89,0.18,0.95,0.90,0.75,0.61), 
"COEF1LOWER"=c(0.05,0.83,0.70,0.49,0.79,0.08,0.85,0.80,0.65,0.51),
"COEF1UPPER"=c(0.25,1.03,0.90,0.69,0.99,0.28,1.05,1.00,0.85,0.71),
"COEF2"=c(0.21,0.29,0.95,0.80,0.34,0.10,0.40,0.47,0.54,0.67), 
"COEF2LOWER"=c(0.11,0.19,0.85,0.70,0.24,0.00,0.30,0.37,0.44,0.57),
"COEF2UPPER"=c(0.31,0.39,1.05,0.90,0.44,0.20,0.50,0.57,0.64,0.77),
"COEF3"=c(0.44,0.44,0.40,0.62,0.24,0.05,0.75,0.03,0.42,0.21), 
"COEF3LOWER"=c(0.34,0.34,0.30,0.52,0.14,-0.05,0.65,-0.07,0.32,0.11),
"COEF3UPPER"=c(0.54,0.54,0.50,0.72,0.34,0.15,0.85,0.13,0.52,0.31))

我的目標是使用ggplot()作圖,這是我擁有的起始數據。 我以前用長數據文件作圖,但不確定如何用寬文件。 我想用它們的置信度極限以不同的顏色繪制COEF1COEF2COEF3

p <- ggplot(DF, aes(x=time, y=COEF, ymin=LOWER, ymax=UPPER)) +
  geom_ribbon(aes(fill=COEF_N), alpha=0.3) +
  geom_line(aes(color=COEF_N))
print(p)

這是最有效的數據整形方法嗎? @Uwe @ Z.lin

DF1 <- data.table(DF)
col1 <- c("COEF1", "COEF2", "COEF3") 
col2 <- c("COEF1LOWER", "COEF2LOWER", "COEF3LOWER")
col3 <- c("COEF1UPPER", "COEF2UPPER", "COEF3UPPER")
DFNEW <- data.table::melt(DF1, measure = list(col1,col2,col3), 
                          value.name = c("EST_EST","COEF_LOWER","COEF_UPPER"))

OP要求使用最有效的方法來重塑具有從寬到長格式的多個值列的數據。

因此,這是一種通過使用patterns()函數在measure.vars指定列名稱來改善OP已經有效的答案的方法:

library(data.table)
long <- melt(setDT(DF), measure.vars = patterns("COEF\\d$", "LOWER$", "UPPER$"),
     value.name = c("COEF_EST", "COEF_LOWER", "COEF_UPPER"))

請注意, setDT() 通過引用將數據幀強制為data.table類,即不復制對象。

為了完整起見,這也是情節:

library(ggplot2)
ggplot(long, aes(x = TIME, y = COEF_EST, ymin = COEF_LOWER, ymax = COEF_UPPER)) +
  geom_ribbon(aes(fill = variable), alpha = 0.3) +
  geom_line(aes(color = variable))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM