データ テーブルがあり、一意の日ごとに新しい列を作成し、その日が列名と一致する各行に 1 を割り当てたい
forループを使用してこれを行いましたが、data.tableとsetを使用して最適化する方法があるかどうか疑問に思っていましたか?
ここに例があります
dt <- data.table(Week_Day = c("Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"))
Day <- unique(dt$Week_Day)
for (i in 1:length(Day)) {
if (Day[i] != "Sunday") {
dt[, Day[i] := ifelse(Week_Day == Day[i], 1, 0)]
}
}
私のテーブルは298k行で、実行に時間がかかりませんが(以下)、長いスクリプトの一部であり、非効率的なループがかなりあるため、全体の実行時間を短縮しようとしています.
実行時間:
user system elapsed
0.99 0.06 1.05
前もって感謝します。