> frame1
  ID GROUP PROP_AREA
1  1     A      0.33
2  2     A      0.33
3  3     A      0.33
4  4     B      0.50
5  5     B      0.50
6  6     C      1.00
7  7     D      1.00
> frame2
  GROUP VALUE1 VALUE2
1     A     10      5
2     B     20     10
3     C     30     15
4     D     40     20
>
> obj1 <- merge(x=frame1, y=frame2, by="GROUP")
> obj1$rval1 <- obj1$PROP_AREA * obj1$VALUE1
> obj1$rval2 <- obj1$PROP_AREA * obj1$VALUE2
> obj1
  GROUP ID PROP_AREA VALUE1 VALUE2 rval1 rval2
1     A  1      0.33     10      5   3.3  1.65
2     A  2      0.33     10      5   3.3  1.65
3     A  3      0.33     10      5   3.3  1.65
4     B  4      0.50     20     10  10.0  5.00
5     B  5      0.50     20     10  10.0  5.00
6     C  6      1.00     30     15  30.0 15.00
7     D  7      1.00     40     20  40.0 20.00
>
> idx <- match(x=frame1$GROUP, table=frame2$GROUP)
> rval1 <- frame1["PROP_AREA"] * frame2[idx, "VALUE1"]
> rval2 <- frame1["PROP_AREA"] * frame2[idx, "VALUE2"]
> cbind("ID"=frame1[idx, "ID"], rval1, rval2)
  ID PROP_AREA PROP_AREA
1  1       3.3      1.65
2  1       3.3      1.65
3  1       3.3      1.65
4  2      10.0      5.00
5  2      10.0      5.00
6  3      30.0     15.00
7  4      40.0     20.00
>

Is this what you are looking for?  I hope this helps.

Chel Hee Lee

On 12/03/2014 03:14 PM, Brock Huntsman wrote:
I apologize if this is a relatively easy problem, but have been stuck on
this issue for a few days. I am attempting to combine values from 2
separate dataframes. Each dataframe contains a shared identifier (GROUP).
Dataframe 1 (3272 rows x 3 columns) further divides this shared grouping
factor into unique identifiers (ID), as well as contains the proportion of
the GROUP area of which the unique identifier consists (PROP_AREA).
Dataframe 2 (291 x 14976) in addition to consisting of the shared
identifier, also has numerous columns consisting of values (VALUE1,
VALUE2). I would like to multiply the PROP_AREA in dataframe 1 by each
value in dataframe 2 (VALUE1 through VALUE14976) based on the GROUP factor,
constructing a final dataframe of size 3272 x 14976. An example of the data
frames are as follows:


frame1:

ID

GROUP

PROP_AREA

1

A

0.33

2

A

0.33

3

A

0.33

4

B

0.50

5

B

0.50

6

C

1.00

7

D

1.00



frame2:

GROUP

VALUE1

VALUE2

A

10

5

B

20

10

C

30

15

D

40

20



  Desired dataframe

frame3:

ID

VALUE1

VALUE2

1

3.3

1.65

2

3.3

1.65

3

3.3

1.65

4

10

5

5

10

5

6

30

15

7

40

20





I assume I would need to use the %in% function or if statements, but am
unsure how to write the code. I have attempted to construct a for loop with
an if statement, but have not been successful as of yet.


for(i in 1:nrow(frame1)) {

   for(j in 2:ncol(frame2)) {

     if (frame1$GROUP[i] == frame2$GROUP[i]) {

       frame3[i,j+1] <- frame1$PROP_AREA[i]*frame2[i,j+1]

     }

   }

}


Any advice on suggested code or packages to read up on would be much
appreciated.

Brock

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to