数据帧中列的有效乘法

问题描述 投票:9回答:3

我有一个大型数据框,我将两列相乘以获得另一列。起初我正在运行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)

但这是永远的

r dataframe plyr
3个回答
21
投票

正如Blue Magister在评论中所说,

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

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


11
投票

data.table解决方案将避免大量内部复制,同时具有不使用$溅出代码的优点。

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

10
投票

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

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

要么

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

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

© www.soinside.com 2019 - 2024. All rights reserved.