我開始與R一起工作,這必須是一個基本問題,但似乎並不明顯,如何輕鬆完成。如果我有以下數據集:R,具有多個y值的基本圖形
x y
0,1
0,2
1,2
1,4
等等,所以每個x值有多個y值。這我怎麼能輕鬆地做一個顯示數據和手段和CI間隔的陰謀。
我可以做到這一點,因爲我一起提供了一堆解決方案,但是必須有一個更簡單的解決方案。
這就是我與這個非常簡單的數據文件
cardboard,r1,r2,r3,r4,r5,r6
0,233,130,110,140,160
101,293,340,313,260,366,38
這混亂的代碼做:
er <- read.csv(file="ianevans.csv",head=TRUE,sep=",")
er[,2:7] <- min(er[1,2:7],na.rm=TRUE)/er[,2:7]*100
er$sharpness[1]=mean(as.vector(er[1,2:7], "numeric"),na.rm=TRUE)
er$sharpness[2]=mean(as.vector(er[2,2:7], "numeric"),na.rm=TRUE)
er$se[1]=sd(as.vector(er[1,2:7], "numeric"),na.rm=TRUE)/sqrt(6-1)
er$se[2]=sd(as.vector(er[2,2:7], "numeric"),na.rm=TRUE)/sqrt(6-1)
p <- ggplot(er,aes(x=cardboard,y=sharpness))
p1 <- p + geom_point(aes(y=sharpness,color="red",size=5))
p2 <- p1 +
scale_shape_discrete(solid=F) +
geom_point(aes(y=r1),color="blue",shape="o",size=3) +
geom_point(aes(y=r2),color="blue",shape="o",size=3) +
geom_point(aes(y=r3),color="blue",shape="o",size=3) +
geom_point(aes(y=r4),color="blue",shape="o",size=3) +
geom_point(aes(y=r5),color="blue",shape="o",size=3) +
geom_point(aes(y=r6),color="blue",shape="o",size=3)
p3 <- p2 +
geom_errorbar(aes(ymax=sharpness+se,ymin=sharpness-se),width=5)
同樣工作的,或多或少,但你可以看到有是一堆硬編碼數字,並且必須有一個更好的方式來建立數據文件並繪製圖表,並且可以輕鬆地處理每個x數據的不同數量的y數據。一些數據操作的方式也是很棘手的,因爲它應該可以做到這一點,而不需要單獨引用手段,sd's ,.
的A [再現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)你的數據會有所幫助。但通常情況下,您可以創建一些功能來完成一些操作。 'se < - function(vec){sd(vec,na.rm = T)/ sqrt(len(vec))}'。如果你的數據是[整理表格](http://vita.had.co.nz/papers/tidy-data.pdf),它會促進這一點。 – jraab 2015-01-27 00:11:25
這有幫助嗎?'ggplot(呃,aes(紙板,清晰度))+ stat_summary(fun.data = mean_cl_normal,geom =「pointrange」)''。或者你可能想''mean_sdl()' – user20650 2015-01-27 01:27:44