2つの列を乗算して別の列を取得する、大きなデータフレームがあります。最初は、次のように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)
しかし、これは永遠にかかります
ブルーマジスターがコメントで言ったように、
df$new_column <- df$column1 * df$column2
正常に動作するはずです。もちろん、データの例がないかどうかを確実に知ることはできません。
data.table
ソリューションは、コードを$
で飛散させないという利点を持ちながら、多くの内部コピーを回避します。
library(data.table)
DT <- data.table(df)
DT[ , new := column1 * column2]
Sacha's Answerのマイナーな、やや効率の悪いバージョンは、transform()
またはwithin()
を使用することです。
df <- transform(df, new = column1 * column2)
または
df <- within(df, new <- column1 * column2)
(ユーザーコードを$
で飛ばすことは嫌いです。)