I have to following issue using R. In short I want to create multiple new columns in a data frame based on calculations of different column pairs in the data frame.
In case you like to consider a base R approach, here's how you could do it:
cbind(df, lapply(split.default(df, substr(names(df), 0,1)), rowSums))
# a1 b1 c1 a2 b2 c2 a b c
#1 1 4 10 9 3 15 10 7 25
#2 2 5 11 10 4 16 12 9 27
#3 3 6 12 11 5 17 14 11 29
#4 4 7 13 12 6 18 16 13 31
#5 5 8 14 13 7 19 18 15 33
It splits the data column-wise into a list, based on the first letter of each column name (either a, b, or c).
If you have a large number of columns and need to differentiate between all characters except the numbers at the end of each column name, you could modify the approach to:
cbind(df, lapply(split.default(df, sub("\\d+$", "", names(df))), rowSums))