我有一个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
)
有没有办法使这个循环或使之更容易?
答案 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)]
借助回收利用。