Давайте предположим следующий фрейм данных (хотя в моем реальном наборе данных гораздо больше столбцов):
df<- data.frame(date=c(01.01.2010,02.01.2010, 03.01.2010),
x1=c(1,2,4), y1=c(1,2,3), x2=c(1,2,2), y2=c(3,4,4), x3=c(3,3,3), y3=c(3,4,5))
Date x1 y1 x2 y2 x3 y3
01.01.2010 1 1 1 3 3 3
02.01.2010 2 2 2 4 3 4
03.01.2010 4 3 2 4 3 5
Во-первых, я хочу вычислить сумму всех столбцов y (каждый второй столбец) как новый столбец с именем y_total и добавить его во фрейм данных. Во-вторых, я хочу вычислить новые столбцы для всех столбцов x, где x1_new= x1*(y1/y_total), x2_new= x2*(y2/y_total), x3_new= x3*(y3/y_total). Я хочу рассчитать все столбцы x1_new, x2_new, n3_new сразу, так как в моем реальном наборе данных у меня до 60 таких столбцов. В конкретном примере это должно выглядеть так:
Date x1 y1 x2 y2 x3 y3 y_total x1_new x2_new x3_new
01.01.2010 1 1 1 3 3 3 7 0.1428 0.4286 1.286
02.01.2010 2 2 2 4 3 4 10 0.4 0.8 1.2
03.01.2010 4 3 2 4 3 5 12 1 0.6666 1.25
Есть ли способ, как я мог бы вычислить новые столбцы x для каждого старого столбца x одновременно? Я спрашиваю об этом, потому что иногда у меня есть фреймы данных с 90 столбцами x. Заранее спасибо!