У меня есть фрейм данных с 83 столбцами.Я хочу умножить каждый i и i + 1-й столбец и перейти к i + 2-му столбцу, умножить i + 2 и i + 3 и т. Д. До столбца 82. Или Умножить col1 и col2, col3 и col4 и т. Д. До col81 * col82 Исохранить результаты в новом фрейме данных, один со столбцом для каждого продукта. Есть ли простой способ сделать это?
Я вручную создал это с помощью
new_df = data.frame(h1 = df1$c1*df1$c2, h2 = df1$c3*df1$c4, ...., h41 = df1$c81*df1$c82 )
Есть ли способ сделать это или сделать это проще?
Вы можете явно выбрать нечетные и четные столбцы с помощью
df[, seq(1, ncol(df), by = 2)] * df[, seq(2, ncol(df), by = 2)]
или, более компактно, но и менее читабельно,
df[, c(TRUE, FALSE)] * df[, c(FALSE, TRUE)]
с помощью рециркуляции.
Один из вариантов - создать последовательность в цикле
sapply(seq(1, ncol(df1), 2), function(i) df1[[i]] * df1[[i+1]])