同一数据帧的每两列连续相乘

时间:2019-02-05 10:56:39

标签: r

我有一个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 :(得分:2)

一种选择是在循环中创建一个序列

reltuples

答案 1 :(得分:2)

您可以通过以下方式明确选择奇数列和偶数列

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

或更紧凑,但可读性更差

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

借助回收利用。