2009-03-18 14 views
7

Tengo datos que se parecen a esto. En el que quiero trazar el valor acumulado de dat1 con respecto a al eje x. También trama junto con dat2.Gráfico cumulativo con X-Axis dado

#x-axis dat1    dat2 
-10  0.0140149  0.0140146 
-9  0.00890835  0.00891768 
-8  0.00672276  0.00672488 
-7  0.00876399  0.00879401 
-6  0.00806879  0.00808141 
-5  0.0088366  0.00885121 
-4  0.00856872  0.00857769 
-3  0.0195384  0.0196094 
-2  0.0160239  0.0161829 
-1  0.0254455  0.0257845 
0  0.0397413  0.0400913 
1  0.0743316  0.0755453 
2  0.0247501  0.0253324 
3  0.0214285  0.021778 
4  0.0241462  0.0244967 
5  0.0150943  0.015241 
6  0.0141398  0.0142373 
7  0.0101515  0.0102948 
8  0.0308843  0.031294 
9  0.0095504  0.00960626 
10  0.00729676  0.0073713 

¿Cuál es la forma más común de hacerlo en R?

Miré ECDF desde Hmisc, no parece hacer lo que quiero. En particular, no nos permite dar el valor del eje x.

Respuesta

7

Creo que la función que está buscando es cumsum() que hará una suma acumulada en un vector.

#put your data into 3 vectors 
x<-c(-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10) 
dat1<-c(0.0140149,0.00890835,0.00672276,0.00876399,0.00806879,0.0088366,0.00856872,0.0195384,0.0160239,0.0254455,0.0397413,0.0743316,0.0247501,0.0214285,0.0241462,0.0150943,0.0141398,0.0101515,0.0308843,0.0095504,0.00729676) 
dat2<-c(0.014015,0.008918,0.006725,0.008794,0.008081,0.008851,0.008578,0.019609,0.016183,0.025785,0.040091,0.075545,0.025332,0.021778,0.024497,0.015241,0.014237,0.010295,0.031294,0.009606,0.007371) 

#create a new vector called cdat1 to hold the cumulative sum 
cdat1<-cumsum(dat1) 
plot(x,cdat1) 
points(x,dat2,col="red") 

Utilizo los puntos de función de arriba para agregar dat2 al gráfico existente. Ejecuta esto en R y mira si te da lo que necesitas.

3

Si tiene que los datos en un archivo de texto (por ejemplo data.txt) también se puede hacer lo siguiente:

A <- read.table("data.txt",header=TRUE) 
attach(A) 
plot(x.axis, cumsum(dat1)) 
points(x.axis, cumsum(dat2), col='red') 

Como dijo JD largo, la función cumSum es lo que estabas buscando.

Cuestiones relacionadas