[R] How to adjust the start of a series to zero? (i.e. subtract the first value from the sequence)

arun smartpink111 at yahoo.com
Sun Jul 1 01:16:44 CEST 2012


HI,

Try this:
#dat1: data

dat2<-split(dat1,dat1$point)
adjmeanlist<-lapply(dat2,function(x)x[,3]-x[,3][1])
dat3<-data.frame(dat1,adjmean=unlist(adjmeanlist))
 head(dat3)
  point time     mean        sd  adjmean
1     1    1 52.50100 1.5073927 0.000000
3     1    2 54.50182 0.8510329 2.000818
4     1    3 56.60174 1.5787222 4.100739
5     1    4 57.20000 1.2292726 4.699000
6     1    5 59.30000 2.2632327 6.799000
7     1    6 57.80089 1.4745218 5.299893



A.K.



----- Original Message -----
From: Kristiina Hurme <kristiina.hurme at uconn.edu>
To: r-help at r-project.org
Cc: 
Sent: Saturday, June 30, 2012 5:21 PM
Subject: [R] How to adjust the start of a series to zero? (i.e. subtract the first value from the sequence)

Hello, 
I'd have a time series, where I am plotting the means and sd of a distance
for a variety of positions along a bird's bill. I'd like to set each line
(represented by "point") to start at zero, so that I can look at the
absolute change along the series. At the moment I only know how to do that
in Excel, by subtracting the value of time 1, point 1 from all other times
for point 1. My actual data set has many points ( 20 per bird, only 3 shown
here), so I would love to make this faster in R. Ideally, I would have
another column titled "adj_mean" for the adjusted means. 

Here is an example. 

> sort2v4
    point time      mean        sd
1       1    1 52.501000 1.5073927
3       1    2 54.501818 0.8510329
4       1    3 56.601739 1.5787222
5       1    4 57.200000 1.2292726
6       1    5 59.300000 2.2632327
7       1    6 57.800893 1.4745218
8       1    7 55.303508 2.2661855
9       1    8 51.100943 1.8540025
10      1    9 50.600000 1.7126977
2       1   10 52.904716 1.1010460
111     2    1 50.605963 1.2633969
113     2    2 52.203828 0.7890765
114     2    3 54.100909 1.1013344
115     2    4 55.000000 1.1547005
116     2    5 57.001725 1.6341500
117     2    6 55.003591 1.5652438
118     2    7 52.911089 1.7373914
119     2    8 49.204022 1.0350809
120     2    9 48.904103 0.8747568
112     2   10 50.915700 0.8765483
131     3    1 48.608228 0.8433913
133     3    2 49.307101 0.4827703
134     3    3 51.310824 0.9424023
135     3    4 52.413350 0.6997860
136     3    5 54.116723 1.1927297
137     3    6 52.618161 1.1686288
138     3    7 49.822764 1.6303473
139     3    8 47.107336 1.2013356
140     3    9 47.104214 1.1986148
132     3   10 48.719484 0.6765047

and I would like it to look like this... (which I did in Excel). The start
of each time 1-10 has an adj_mean of 0. 
> sort2v4                    
    point    time    mean    sd    adj_mean
1    1    1    52.501    1.5073927    0
3    1    2    54.501818    0.8510329    2.000818
4    1    3    56.601739    1.5787222    4.100739
5    1    4    57.2    1.2292726    4.699
6    1    5    59.3    2.2632327    6.799
7    1    6    57.800893    1.4745218    5.299893
8    1    7    55.303508    2.2661855    2.802508
9    1    8    51.100943    1.8540025    -1.400057
10    1    9    50.6    1.7126977    -1.901
2    1    10    52.904716    1.101046    0.403716
111    2    1    50.605963    1.2633969    0
113    2    2    52.203828    0.7890765    1.597865
114    2    3    54.100909    1.1013344    3.494946
115    2    4    55    1.1547005    4.394037
116    2    5    57.001725    1.63415    6.395762
117    2    6    55.003591    1.5652438    4.397628
118    2    7    52.911089    1.7373914    2.305126
119    2    8    49.204022    1.0350809    -1.401941
120    2    9    48.904103    0.8747568    -1.70186
112    2    10    50.9157    0.8765483    0.309737
131    3    1    48.608228    0.8433913    0
133    3    2    49.307101    0.4827703    0.698873
134    3    3    51.310824    0.9424023    2.702596
135    3    4    52.41335    0.699786    3.805122
136    3    5    54.116723    1.1927297    5.508495
137    3    6    52.618161    1.1686288    4.009933
138    3    7    49.822764    1.6303473    1.214536
139    3    8    47.107336    1.2013356    -1.500892
140    3    9    47.104214    1.1986148    -1.504014
132    3    10    48.719484    0.6765047    0.111256

Thank you so much for your help. 
Kristiina

--
View this message in context: http://r.789695.n4.nabble.com/How-to-adjust-the-start-of-a-series-to-zero-i-e-subtract-the-first-value-from-the-sequence-tp4634999.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list