数据帧中列的有效乘法

时间:2012-09-10 18:40:51

标签: r dataframe plyr

我有一个大型数据框,我将两列相乘以获得另一列。起初我正在运行一个for循环,如下所示:

for(i in 1:nrow(df)){
    df$new_column[i] <- df$column1[i] * df$column2[i]
}

但这需要9天。

另一种选择是plyr,我实际上可能错误地使用了变量:

new_df <- ddply(df, .(column1,column2), transform, new_column = column1 * column2)

但这需要永远

4 个答案:

答案 0 :(得分:21)

正如Blue Magister在评论中所说,

df$new_column <- df$column1 * df$column2

应该工作得很好。当然,我们永远无法确定我们是否没有数据示例。

答案 1 :(得分:11)

data.table解决方案可以避免大量内部复制,同时具有不会使用$传播代码的优势。

 library(data.table)
 DT <- data.table(df)
 DT[ , new := column1 * column2]

答案 2 :(得分:10)

Sacha的答案的一个次要的,效率稍低的版本是使用transform()within()

df <- transform(df, new = column1 * column2)

df <- within(df, new <- column1 * column2)

(我讨厌用$粉碎我的用户代码。)

答案 3 :(得分:1)

您可以简单地创建一个函数来处理各种乘法,如下所示:

group by