Умножение последовательно каждые два столбца одного и того же фрейма данных - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть фрейм данных с 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
                 )

Есть ли способ сделать это или сделать это проще?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете явно выбрать нечетные и четные столбцы с помощью

df[, seq(1, ncol(df), by = 2)] * df[, seq(2, ncol(df), by = 2)]

или, более компактно, но и менее читабельно,

df[, c(TRUE, FALSE)] * df[, c(FALSE, TRUE)]

с помощью рециркуляции.

0 голосов
/ 05 февраля 2019

Один из вариантов - создать последовательность в цикле

sapply(seq(1, ncol(df1), 2), function(i) df1[[i]] * df1[[i+1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...