[R] How to create a new data.frame based on calculation of subsets of an existing data.frame

Jim Lemon drj|m|emon @end|ng |rom gm@||@com
Tue Dec 17 23:40:13 CET 2019


Okay, I'm away for most of the day and might not be able to look at it
until tomorrow.

Jim

On Wed, Dec 18, 2019 at 9:27 AM Ioannou, Ioanna
<ioanna.ioannou using ucl.ac.uk> wrote:
>
> Hello Jim ,
>
> I am very sorry.  Here is the corrected sample data to play with:
>
> Test.v2 <- data.frame(Ref.No = c(1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629),
>                       Region = rep(c('South America'), times = 8),
>                       IM.type = c('PGA', 'PGA', 'PGA', 'PGA', 'Sa', 'Sa', 'Sa', 'Sa'),
>                       Damage.state = c('DS1', 'DS2', 'DS3', 'DS4','DS1', 'DS2', 'DS3', 'DS4'),
>                       Taxonomy = c('ER+ETR_H1','ER+ETR_H1','ER+ETR_H1','ER+ETR_H1','ER+ETR_H2','ER+ETR_H2','ER+ETR_H2','ER+ETR_H2'),
>                       IM_1 = c(0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00),
>                       IM_2 = c(0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08),
>                       IM_3 = c(0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16),
>                       IM_4 = c(0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24),
>                       Prob.of.exceedance_1 = c(0,0,0,0,0,0,0,0),
>                       Prob.of.exceedance_2 = c(0,0,0,0,0,0,0,0),
>                       Prob.of.exceedance_3 = c(0.26,0.001,0.00019,0.000000573,0.04,0.00017,0.000215,0.000472),
>                       Prob.of.exceedance_4 = c(0.72,0.03,0.008,0.000061,0.475,0.0007,0.00435,0.000405)
>                       )
>
> Basically I am using the total probability theorem to calculate a best estimate. I am stuck how to do it for many cases. Many thanks for your patience.
>
> -----Original Message-----
> From: Jim Lemon [mailto:drjimlemon using gmail.com]
> Sent: Tuesday, December 17, 2019 10:22 PM
> To: Ioannou, Ioanna <ioanna.ioannou using ucl.ac.uk>
> Subject: Re: [R] How to create a new data.frame based on calculation of subsets of an existing data.frame
>
> Hi Ioanna,
> After looking at your post for a while, I think that you are combining columns IM_1 to IM_4 to generate VC_1 to VC_4. First, you seem to have omitted the "Region" column from Test_v2, which means that your indices (10:13) run out of range. It seems to me that you would find it easier to write down what arithmetic operations you want and translate these into logical expressions to extract the rows.
>
> Jim
>
> On Wed, Dec 18, 2019 at 7:47 AM Ioannou, Ioanna <ioanna.ioannou using ucl.ac.uk> wrote:
> >
> > Hello everyone,
> >
> > I have the following problem: I have a data.frame with multiple fields.
> >
> > If I had to do my calculations for a given combination of IM.type and Taxonomy is the following:
> > D <- read.csv('Test_v2.csv')
> > names(D)
> >
> > VC <- 0.01*( subset(D, IM.type == 'PGA' & Damage.state == 'DS1' & Taxonomy == 'ER+ETR_H1')[10:13] -
> >               subset(D, IM.type == 'PGA' & Damage.state == 'DS2' & Taxonomy == 'ER+ETR_H1')[10:13])  +
> >   0.02*(     subset(D, IM.type == 'PGA' & Damage.state == 'DS2' & Taxonomy == 'ER+ETR_H1')[10:13] -
> >               subset(D, IM.type == 'PGA' & Damage.state == 'DS3' & Taxonomy == 'ER+ETR_H1')[10:13])  +
> >   0.43*( subset(D, IM.type == 'PGA' & Damage.state == 'DS3' & Taxonomy == 'ER+ETR_H1')[10:13] -
> >            subset(D, IM.type == 'PGA' & Damage.state == 'DS4' & Taxonomy == 'ER+ETR_H1')[10:13])  +
> >   1.0*( subset(D, IM.type == 'PGA' & Damage.state == 'DS4' & Taxonomy
> > == 'ER+ETR_H1')[10:13])
> >
> > So the question is how can I do that in an automated way for all possible combinations and store the results in new data.frame  which would look like this:
> >
> > Ref.No. Region  IM.type Taxonomy        IM_1    IM_2    IM_3    IM_4    VC_1    VC_2    VC_3    VC_4
> > 1622    South America   PGA     ER+ETR_H1       1.00E-06        0.08    0.16    0.24      3.49e-294               3.449819e-05  0.002748889     0.01122911
> >
> > Best, ,
> > ioanna
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat
> > .ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=02%7C01%7C%7C2808d89de
> > 79441309c4808d7833f7f81%7C1faf88fea9984c5b93c9210a11d9a5c2%7C0%7C0%7C6
> > 37122181061837860&sdata=B%2FmCVpyLnCghj3KxgP7fYu3aOxy7uRjAVZ8fgdhc
> > u4w%3D&reserved=0 PLEASE do read the posting guide
> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.R
> > -project.org%2Fposting-guide.html&data=02%7C01%7C%7C2808d89de79441
> > 309c4808d7833f7f81%7C1faf88fea9984c5b93c9210a11d9a5c2%7C0%7C0%7C637122
> > 181061837860&sdata=e4YB5rlwfSLO%2B01i92q4%2F8otuyjv%2FoZnuIwfDWPGi
> > EE%3D&reserved=0 and provide commented, minimal, self-contained,
> > reproducible code.



More information about the R-help mailing list