我在我的數據集中有大約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