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

Rui Barradas ruipbarradas at sapo.pt
Sun Jul 1 00:41:44 CEST 2012


Hello,

Try, where 'dat' is your dataset,

dd <- lapply(split(dat, dat$point), function(x) x$mean - x$mean[1])
dat$adj_mean <- NA
for(i in names(dd))
	dat$adj_mean[dat$point == i] <- dd[[i]]
rm(dd)  # clean-up

Now 'dat' has one extra column, with the adjusted mean values.

Hope this helps,

Rui Barradas

Em 30-06-2012 22:21, Kristiina Hurme escreveu:
> 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