I have data as follows:
#create sample data frame
df <- data.frame(red_alice_type1 = runif(10, 0, 10),
blue_alice_type1 = runif(10, 0, 10),
green_alice_type1 = runif(10, 0, 10),
red_bob_type1 = runif(10, 0, 10),
blue_bob_type1 = runif(10, 0, 10),
green_bob_type1 = runif(10, 0, 10),
red_alice_type2 = runif(10, 0, 10),
blue_alice_type2 = runif(10, 0, 10),
green_alice_type2 = runif(10, 0, 10),
red_bob_type2 = runif(10, 0, 10),
blue_bob_type2 = runif(10, 0, 10),
green_bob_type2 = runif(10, 0, 10))
I'd like to multiply each color-name pair to create a new column. e.g. blue_alice_type1 * blue_alice_type2 = blue_alice_product
I attempt to iterate over columns to perform this multiplation as follows:
#categories
colors <- c('red', 'blue', 'green')
names <- c('alice', 'bob')
#Attempt 1: Mutate
for (i in colors){
for (j in names){
df <- mutate_(df,
paste(i, j, 'product', sep = "_") = paste(i, j, 'type1', sep = "_") *
paste(i, j, 'type2', sep = "_"))
}
}
#Attempt 2: Base R
for (i in colors){
for (j in names){
assign( paste0('df$', paste(i, j, 'product', sep = "_")),
eval(parse(text=paste0('df$', paste(i, j, 'type1', sep = "_")))) *
eval(parse(text=paste0('df$', paste(i, j, 'type2', sep = "_")))))
}
}
Attempt 1 gives an error. Attempt 2 runs but doesn't create new columns. Any help?