12

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)

しかし、これは永遠にかかります

4

4 に答える 4

26

Blue Magister がコメントで述べたように、

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

うまくいくはずです。もちろん、データの例がなければ確実に知ることはできません。

于 2012-09-10T18:44:31.007 に答える
12

解決策は、多くのdata.table内部コピーを回避しながら、コードに $.

 library(data.table)
 DT <- data.table(df)
 DT[ , new := column1 * column2]
于 2012-09-10T20:07:46.270 に答える
11

Sacha's Answer のマイナーな、やや効率の悪いバージョンは、transform()またはwithin()

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

また

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

(私は自分のユーザー コードに$.

于 2012-09-10T18:49:33.593 に答える