1

I have two separate data frames as follows:

df1:
       value_a frequency
    1        1         5
    2        1         5
    3        1         5
    4        1         5
    5        1         5
    6        2         4
    7        2         4
    8        2         4
    9        2         4
    10       3         2
    11       3         2
    12       4         3
    13       4         3
    14       4         3

and

df2:
  value_a value_b
1       1      34
2       2      85
3       3       8
4       4      92

I need to add df2$value_b to df1 with the same frequency as df1$value_a, and so far I've only managed to do this by filling individual values:

df1$value_b[df1$value_a == 1] <- 34
df1$value_b[df1$value_a == 2] <- 85
df1$value_b[df1$value_a == 3] <- 8
df1$value_b[df1$value_a == 4] <- 92

...which gives the desired output of:

   value_a frequency value_b
1        1         5      34
2        1         5      34
3        1         5      34
4        1         5      34
5        1         5      34
6        2         4      85
7        2         4      85
8        2         4      85
9        2         4      85
10       3         2       8
11       3         2       8
12       4         3      92
13       4         3      92
14       4         3      92

What is a more efficient way to do this with much larger and more complex data?

Example data:

df1 <- data.frame("value_a" = c(1,1,1,1,1,2,2,2,2,3,3,4,4,4), "frequency" = c(5,5,5,5,5,4,4,4,4,2,2,3,3,3))

df2 <- data.frame("value_a" = c(1,2,3,4), "value_b" = c(34,85,8,92))
pyne
  • 507
  • 1
  • 5
  • 16

0 Answers0