我有更多或更少看起來像這樣(不知道怎麼粘貼地塊)數據:飛度上下百分線
library(reshape2)
library(ggplot2)
df <- cbind(runif(2000,0,1000), rep(0,n=2000))
for (i in 1:nrow(df)) {
df[i,2] <- runif(1, df[i,1], (10000-2*df[i,1]))
}
colnames(df) <- c("x","y")
df.1 <- melt(data.frame(df), id="x")
p <- ggplot(df.1, aes(x=x, y=value))
p <- p + geom_point()
p <- p + geom_smooth()
p
而是顯示流暢的線條,我需要一個直線的最低的5%和最高的95%的一條直線。 的一個問題是,我有幾百萬點的,所以我想data.table是前進的好方法:
library(data.table)
dt <- data.table(df)
dt[,xbin:=0]
for (i in 0:100) {
x1 <- i*100
x2 <- (i+1)*100
dt[x>=x1 & x<x2, xbin:=x2]
}
setkey(dt,xbin)
result1.dt <- dt[,list(ymin=min(y), ymax=max(y)), by=key(dt)]
result1.df <- data.frame(result1.dt)
p <- p + geom_line(data=result1.df, aes(x=xbin, y=ymin))
p <- p + geom_line(data=result1.df, aes(x=xbin, y=ymax))
p
該行還沒有直的,而是從這裏它是微不足道的解決這個問題。
而不是最大和最小,我怎麼能data.table獲得第5和第95百分點?我是否重新發明了輪子,即是否已經有了這個(和一個功能)的統計方法?