Using the following code:
val_a <- c("2", "4", "6", "8")
divide_a <- c(1, 2, 3, 4)
val_b <- c("62", "42", "56", "28")
divide_b <- c(11, 12, 22, 44)
val_c <- c("652", "142", "546", "298")
divide_c <- c(74, 23, 112, 64)
df <- as.data.frame(cbind(val_a, divide_a, val_b, divide_b, val_c, divide_c))
giving the following data frame:
val_a divide_a val_b divide_b val_c divide_c
1 2 1 62 11 652 74
2 4 2 42 12 142 23
3 6 3 56 22 546 112
4 8 4 28 44 298 64
I'm trying to divide "val" by "divide" for the three sets of values, giving something like:
val_a divide_a val_b divide_b val_c divide_c result_ a result_b result_c
1 2 1 62 11 652 74 2 5,6 8,8
2 4 2 42 12 142 23 4 3,8 6,2
3 6 3 56 22 546 112 etc.
4 8 4 28 44 298 64
So far I've been trying to use a for loop:
for(i in 1:ncol(df)) { # for-loop over columns
df[ , paste0("result", i)] <- as.numeric((df[ ,i]))/as.numeric((df[ ,i+1]))
}
The problems are that:
- It divides every column by the next when it should skip one (e.g. not divide "divide_a" by "val_b")
- Doesn't name the columns
I am at loss what to do and would appreciate any help. My actual dataframe has over 1000 columns so I'd rather not do this manually. Thank you.