[R] Simple loop

Dennis Murphy djmuser at gmail.com
Tue May 3 21:37:23 CEST 2011


Hi:

Here are two more candidates, using packages plyr and data.table. Your
toy data frame is called dd below.

library(plyr)
ddply(dd, .(Site, Prof), transform, Hadj = H - min(H))
  Site Prof  H Hadj
1    1    1 24    8
2    1    1 16    0
3    1    1 67   51
4    1    2 23    0
5    1    2 56   33
6    1    2 45   22
7    2    1 67   21
8    2    1 46    0

library(data.table)
dt <- data.table(dd, key = 'Site, Prof')
dt[, list(H = H, Hadj = H - min(H)), by = 'Site, Prof']

<same output as above>

HTH,
Dennis

On Tue, May 3, 2011 at 8:44 AM, Woida71 <w.gostner at ipp.bz.it> wrote:
> Hello everybody,
> I am beginning with loops and functions and would be glad to have help in
> the following question:
> If i have a dataframe like this
> Site  Prof  H
> 1      1     24
> 1      1     16
> 1      1     67
> 1      2     23
> 1      2     56
> 1      2     45
> 2      1     67
> 2      1     46
> And I would like to create a new column that subtracts the minimum of H from
> H, but for S1 and P1
> only the minimum of the data points falling into this category should be
> taken.
> So for example the three first numbers of the new column write: 24-16,
> 16-16, 67-16
> the following numbers refering to Site1 and Prof2 write: 23-23, 56-23,
> 45-23.
> I think with two loops one refering to the Site, the other to the Prof, it
> should be possible to automatically
> create the new column.
> Thanks a lot for any help.
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Simple-loop-tp3492819p3492819.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