I would like to multiply several columns in my data frame by a vector of values. The specific vector of values varies depending on the value in another column.
- EDIT -
What if I make the dataset more complex, i.e. more than 2 conditions, and conditions are randomly shuffled around the data set?
Here is an example of my dataset:
df=data.frame( Treatment=(rep(LETTERS[1:4],each=2)), Species=rep(1:4,each=2), Value1=c(0,0,1,3,4,2,0,0), Value2=c(0,0,3,4,2,1,4,5), Value3=c(0,2,4,5,2,1,4,5), Condition=c("A","B","A","C","B","A","B","C") )
What does it look like:
Treatment Species Value1 Value2 Value3 Condition A 1 0 0 0 A A 1 0 0 2 BB 2 1 3 4 A B 2 3 4 5 C C 3 4 2 2 B C 3 2 1 1 A D 4 0 4 4 B D 4 0 5 5 C
If Condition=="A" , I would like to multiply columns 3-5 by vector c(1,2,3) . If Condition=="B" , I would like to multiply columns 3-5 by vector c(4,5,6) . If Condition=="C" , I would like to multiply columns 3-5 by vector c(0,1,0) . Thus, the resulting data frame will look like this:
Treatment Species Value1 Value2 Value3 Condition A 1 0 0 0 A A 1 0 0 12 BB 2 1 6 12 A B 2 0 4 0 C C 3 16 10 12 B C 3 2 2 3 A D 4 0 20 24 B D 4 0 5 0 C
I tried a subset of the data frame and vector multiplication:
t(t(subset(df[,3:5],df[,6]=="A")) * c(1,2,3))
But I can not return the frame of the subset of data to the original. Is there a way to perform this operation without a subset of the data frame so that other columns are preserved (e.g. Processing, Views)?