'Multiply numeric columns of two different dataframes based on matching of other columns

I have the first dataframe like:

df1<-structure(list(`Demand Per Section` = c(80, 125, 350, 100, 538, 
75, 25, 138, 138, 75, 150, 37, 225, 35, 40, 125, 25, 25, 125, 
50), `Element Name` = c("Naphthalene", "Nitric acid (concentrated)", 
"Sulphuric acid(concentrated)", "2-hydroxybenzoic acid", "Acetic anhydride", 
"2-Naphthol", "Sodium Hydroxide", "Phenyl hydrazine hydrochloride", 
"Glucose", "Sodium acetate", "Aniline", "Zinc poweder", "2-amino-benzoic acid", 
"1.3-dihydroxybenzene", "Ethyl acetate", "hydroxy benzene", "phenyl methanol", 
"Sodium carbonate", "Potassium permanganate", "Sodium bisulfite."
), `Course Name` = c("Course 1", "Course 1", "Course 1", "Course 1", 
"Course 1", "Course 1", "Course 1", "Course 1", "Course 1", "Course 1", 
"Course 1", "Course 1", "Course 1", "Course 1", "Course 1", "Course 1", 
"Course 1", "Course 1", "Course 1", "Course 1"), Department = c("Chemsitry", 
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", 
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", 
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", 
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry")), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"), na.action = structure(c(`81` = 81L, 
`101` = 101L, `127` = 127L, `134` = 134L, `135` = 135L, `136` = 136L, 
`174` = 174L, `183` = 183L, `220` = 220L, `225` = 225L, `245` = 245L, 
`286` = 286L, `288` = 288L, `290` = 290L, `305` = 305L, `314` = 314L, 
`324` = 324L, `329` = 329L), class = "omit"))

`Demand Per Section` `Element Name`                 `Course Name` Department
                  <dbl> <chr>                          <chr>         <chr>     
 1                   80 Naphthalene                    Course 1      Chemsitry 
 2                  125 Nitric acid (concentrated)     Course 1      Chemsitry 
 3                  350 Sulphuric acid(concentrated)   Course 1      Chemsitry 
 4                  100 2-hydroxybenzoic acid          Course 1      Chemsitry 
 5                  538 Acetic anhydride               Course 1      Chemsitry 
 6                   75 2-Naphthol                     Course 1      Chemsitry 
 7                   25 Sodium Hydroxide               Course 1      Chemsitry 
 8                  138 Phenyl hydrazine hydrochloride Course 1      Chemsitry 
 9                  138 Glucose                        Course 1      Chemsitry 
10                   75 Sodium acetate                 Course 1      Chemsitry 
11                  150 Aniline                        Course 1      Chemsitry 
12                   37 Zinc poweder                   Course 1      Chemsitry 
13                  225 2-amino-benzoic acid           Course 1      Chemsitry 
14                   35 1.3-dihydroxybenzene           Course 1      Chemsitry 
15                   40 Ethyl acetate                  Course 1      Chemsitry 
16                  125 hydroxy benzene                Course 1      Chemsitry 
17                   25 phenyl methanol                Course 1      Chemsitry 
18                   25 Sodium carbonate               Course 1      Chemsitry 

and a second dataframe like:

df2<-structure(list(`Course name` = c("Course 1", "Course 2", "Course 3", 
"Course 4", "Course 1", "Course 2", "Course 3", "Course 4", "Course 5", 
"Course 1", "Course 2", "Course 3", "Course 4", "Course 5"), 
    `number of sections` = c(3, 5, 3, 4, 7, 2, 7, 10, 3, 4, 5, 
    6, 2, 2), Department = c("Chemsitry", "Chemsitry", "Chemsitry", 
    "Chemsitry", "Biology", "Biology", "Biology", "Biology", 
    "Biology", "Physics", "Physics", "Physics", "Physics", "Physics"
    )), row.names = c(NA, -14L), class = c("tbl_df", "tbl", "data.frame"
))


`Course name` `number of sections` Department
   <chr>                        <dbl> <chr>     
 1 Course 1                         3 Chemsitry 
 2 Course 2                         5 Chemsitry 
 3 Course 3                         3 Chemsitry 
 4 Course 4                         4 Chemsitry 
 5 Course 1                         7 Biology   
 6 Course 2                         2 Biology   
 7 Course 3                         7 Biology   
 8 Course 4                        10 Biology   
 9 Course 5                         3 Biology   
10 Course 1                         4 Physics   
11 Course 2                         5 Physics   
12 Course 3                         6 Physics   
13 Course 4                         2 Physics   
14 Course 5                         2 Physics 

What I want is to create a new column in df1 named DemandCourse which will look into df2 in the columns of Course Name and Department and when both will match with Course Name and Department of df1 it will multiply the Demand per Section of df1 with the number of sections of df2. So for example the first row of the new column will be 80*3 =240

r


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source