我想獲得ECDF的所有項目類似(在整個數據表中)到每行中的項目編號,並將ECDF列添加到數據表的末尾(EstimatePrediction)。R兩個數據表上的變異和子集數據
這適用於單個項目,因此它們可以逐個檢查。
#Set Current ItemNumber
currentItemNumber = 「XXXXX」
#Set Estimate Days
currentEstimate = 5
#Gets the index of the ItemNumber from the Matches table
itemNoIndex = ((matches%>%subset(Item_No ==itemNumber))$ItemIndex[1])
#Gets all the matching indexs that equal the index and select data
matchingItems = matches%>%filter(ItemIndex == itemNoIndex) %>%
filter(MatchItemIndex != ItemIndex) %>%
merge(data.filter %>%
select(ITEM_NO,ACTUAL_DAYS),by = 'ITEM_NO')
#Get the ECDF of all matching items at the estimate
ecdf(matchingItems $ACTUAL_DAYS)(currentEstimate)
我想採取上面的R代碼和修改爲整個data.filter數據表工作。問題是它只適用於data.filter數據的第一行。第一行之後的行是基於第一行的數據,而不是它們自己的。
EstimatePrediction = data.filter %>% mutate(PROBABILITY_PREDICTION = ecdf((matches%>%subset(ItemIndex == ((matches%>%subset(Item_No== ITEM_NO))$ItemIndex[1])) %>%
subset(MatchItemIndex != ItemIndex) %>%
merge(data.filter, by = 'ITEM_NO'))$ACTUAL_DAYS)(ESTIMATE_DAYS))
我對R很新,所以我很樂意提供任何建議。我可以迭代data.filter來獲得正確的輸出,但速度非常慢。
樣本數據
Matches
MatchItemIndex ItemIndex MatchItemOrder Item_No Count Cumulative
<int> <int> <int> <chr> <int> <int>
1 1 1 1 CBL233J 14 14
2 2 2 1 CGW112N 4 4
3 3 3 1 CAT418D 5 5
4 4 4 1 BRH131T 29 29
5 5 5 1 CQD390A 17 17
6 6 6 1 CEE533J 11 11
data.filter
ITEM_NO ESTIMATE_DAYS ACTUAL_DAYS
1: CBL233J 10 6
2: CGW112N 22 12
3: CAT418D 22 18
4: BRH131T 33 16
5: CQD390A 21 15
6: CEE533J 7 2
編輯**** 我現在能得到的輸出,我需要它只是很慢:
data.filter = data.filter%>%mutate(Index = 1:n())
loopData = data.filter%>%select(ITEM_NO, ACTUAL_DAYS, ESTIMATE_DAYS, Index)
simpleV = unlist(loopData)
outputTest = 1:nrow(loopData)
ptm <- proc.time()
for(i in 1:nrow(loopData)){
#Get Index for Item Number
itemNoIndex = (matches%>%subset(ITEM_NO == simpleV[paste('ITEM_NO',i,sep="")]))$ItemIndex[1]
#Find all the matches that have the same index
allNNItemData = matches%>%subset(ItemIndex == itemNoIndex) %>%
subset(MatchItemIndex != ItemIndex) %>%
merge(data.filter, by = 'ITEM_NO')
outputTest[i] = ecdf(allNNItemData$ACTUAL_DAYS)(simpleV[paste('ESTIMATE_DAYS',i,sep="")])
}
proc.time() - ptm
歡迎來到SO!你可以請發佈一個[可重現的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? – csgroen
感謝您的回覆!我試圖讓所有項目的ECDF與整個數據表中的項目號相似,並將ECDF列添加到數據表的末尾(EstimatePrediction)。上面的代碼應該與上面添加的示例數據集一起工作。 – JJansen27
也請用您的代碼來解釋您的代碼。似乎也許你只是需要加入你的桌子,但很難說沒有解釋。如果您以複製/粘貼的方式提供樣本數據,那麼它也會非常好,您可以共享代碼以創建樣本,也可以使用樣本數據上的dput()來生成此類代碼。 – Gregor