【发布时间】:2016-03-03 19:50:24
【问题描述】:
我正在使用一个看起来与下面非常相似的数据框:
Image here, unfortunately don't have enough reputation yet
这是一个 600,000 行的数据框。我想要做的是对于同一日期内的每个重复实例,我想将成本除以重复实例的总数。我还想只考虑那些属于“销售”策略的人。
例如,在 2016 年 1 月 1 日,有 2 个“帮助包”也属于“销售”策略。因为在同一日期内有 2 个实例,我想将每个实例的成本除以 2(因此每个实例的成本为 5 美元)。
这是我的代码:
for(i in 1:length(dfExample$Date)){
if(dfExample$Tactic) == "Sales"){
list = agrep(dfExample$Package[i], dfExample$Package)
for(i in list){
date_repeats = agrep(i, dfExample$Date)
dfExample$Cost[date_repeats] = dfExample$Package[i]/length(date_repeats)
}
}
}
这是非常低效和缓慢的。我知道必须有更好的方法来实现这一目标。任何帮助将非常感激。谢谢!
【问题讨论】:
-
没有人想要数据图像。与
dput(droplevels(head(your_data)))共享您的数据。它将是可复制/可粘贴的并保留列类。
标签: r performance loops for-loop vector