我有一个大型数据框,我将两列相乘以获得另一列.起初我正在运行for循环,如下所示:
for(i in 1:nrow(df)){
df$new_column[i] <- df$column1[i] * df$column2[i]
}
Run Code Online (Sandbox Code Playgroud)
但这需要9天.
另一种选择是plyr,我实际上可能错误地使用了这些变量:
new_df <- ddply(df, .(column1,column2), transform, new_column = column1 * column2)
Run Code Online (Sandbox Code Playgroud)
Sac*_*amp 21
正如Blue Magister在评论中所说,
df$new_column <- df$column1 * df$column2
Run Code Online (Sandbox Code Playgroud)
应该工作得很好.当然,我们永远无法确定我们是否没有数据示例.
mne*_*nel 11
甲data.table同时具有不飞散的代码的优点溶液将避免大量的内部拷贝的 $.
library(data.table)
DT <- data.table(df)
DT[ , new := column1 * column2]
Run Code Online (Sandbox Code Playgroud)
Rei*_*son 10
Sacha的答案的一个次要的,效率稍低的版本是使用transform()或within()
df <- transform(df, new = column1 * column2)
Run Code Online (Sandbox Code Playgroud)
要么
df <- within(df, new <- column1 * column2)
Run Code Online (Sandbox Code Playgroud)
(我讨厌用我的用户代码$.)