私は2つのデータフレームがあります。df_workingFileとdf_groupIDs簡単な方法[R]
df_workingFile:
ID | GroupID | Sales | Date
v | a1 | 1 | 2011
w | a1 | 3 | 2010
x | b1 | 8 | 2007
y | b1 | 3 | 2006
z | c3 | 2 | 2006
df_groupIDs:df_groupIDsについては
GroupID | numIDs | MaxSales
a1 | 2 | 3
b1 | 2 | 8
c3 | 1 | 2
、私がしたいのそのグループの最大売上を持つイベントのIDと日付を取得します。したがって、グループ "a1"にはdf_workingFile、 "v"、 "w"の2つのイベントがあります。私は、イベント "w"が最大売上値を持っていることを特定し、その情報をdf_groupIDsに持っていきたいと思います。最終的な出力は次のようになります。
GroupID | numIDs | MaxSales | ID | Date
a1 | 2 | 3 | w | 2010
b1 | 2 | 8 | x | 2007
c3 | 1 | 2 | z | 2006
は、今ここで問題です。私はこれを行うコードを書いたが、それは非常に非効率的で、50〜100K行のデータセットを扱うときは永遠に処理する必要がある。より効率的になるようにコードを書き直す方法を理解する助けが必要です。ここで私は、現在持っているものです:dplyr
使用
i = 1
for (groupID in df_groupIDs$groupID) {
groupEvents <- subset(df_workingFile, df_workingFile$groupID == groupID)
index <- match(df_groupIDs$maxSales[i], groupEvents$Sales)
df_groupIDs$ID[i] = groupEvents$ID[index]
df_groupIDs$Date[i] = groupEvents$Date[index]
i = i+1
}