我在我的数据集中有大约114,000个人ID。每个个人身份证都有来自三个不同变量的数字组合,每个ID都有一个与之相关的美元值。这三个变量有大约4,000个不同的数字组合。换句话说,140,000个ID(和他们的美元)被放入4000个桶中的一个中。在R中使用for循环删除各个桶中的异常值
我想在R中使用'for循环'来实现的目标是从4000个桶中删除最高2%的ID(基于ID的联想金额)。我不想从每个存储桶中删除前2%的美元。是
在我的数据集的行如下: ID(不同ID),EVENT_ID,AL_ID,ACR_ID,ID_Dollars ** EVENT_ID,AL_ID,和ACR_ID是 '三个变量' 我上面引用。
我不知道如何引用这个问题的适当的数据集,或者我将它包括在我的文章中。希望我的解释清楚地回答我提出的问题,如果不是的话,我很抱歉。
在此先感谢您的帮助,非常感谢。
更新2014年11月17日:
我现在有以下脚本:
# create random data similar to your requirements
ID <- seq(1,114000)
Event_ID <- sample(1:40, 114000,replace=TRUE)
AL_ID <- sample(1:10, 114000,replace=TRUE)
ACR_ID <- sample(1:10, 114000,replace=TRUE)
ID_Dollars <- sample(1:200000,114000,replace=TRUE)
df <- data.frame(ID,Event_ID,AL_ID,ACR_ID,ID_Dollars)
# create buckets
groupDf <- group_by(df,Event_ID,AL_ID,ACR_ID)
groupDfSum <- summarize(groupDf, ID_Dollars=sum(as.numeric(ID_Dollars))
groupDfSumHowManyIDShouldBeCut <- mutate(groupDfSum,numberToCut = ceiling(ID_Dollars*0.02))
# Here I am using 1 but you should use maximum value of numberToCut.
IDs_ToBeCut<-filter(groupDf, rank(ID_Dollars, ties.method="first")==max(groupDfSumHowManyIDShouldBeCut$numberToCut))
虽然剧本是朝着正确方向迈出的一步,但它仍然没有完成我最终要处理数据集。我的目标是从4000个桶中的每一个桶中移除episode_ID的前2%(基于美元)。让我知道是否应该提供任何其他信息。一如既往,感谢您的帮助。
从数据集中给出一些示例行 – 2014-11-14 22:10:09
@AtillaOzgur我包含了我的数据集中的行。需要帮助请叫我。谢谢。 – YimYames 2014-11-14 22:33:05