基本上,我有一個非常大的數據幀/數據表,我想搜索一列的第一個和最接近的值,它小於我當前的索引位置。在R中向後搜索一個向量/數據表
例如,假設我有一個數據幀DF
如下:
INDEX | KEY | ITEM
----------------------
1 | 10 | AAA
2 | 12 | AAA
3 | NA | AAA
4 | 18 | AAA
5 | NA | AAA
6 | 24 | AAA
7 | 29 | AAA
8 | 31 | AAA
9 | 34 | AAA
從我們在索引3和索引5.現在的NA
值這個數據幀,假設我們開始在指數8(其中KEY
爲31)。我想向後搜索列KEY
,以便在找到第一個實例NA
的那一刻停止搜索,並返回NA值的索引。
我知道有由於我的工作數據幀的龐大規模的方式來找到一個向量/列的所有NA
值(例如,我可以用which(is.na(x))
返回具有NA
索引值),但並由於需要執行大量的迭代,所以這是一種非常低效的方式。我想要做的一個方法是創建一種「do while」循環,它似乎工作,但這又似乎效率很低,因爲它需要每次執行計算(並且考慮到我需要執行100,000次以上的迭代看起來不是一個好主意)。
是否有從特定索引向後搜索列的快速方式,以便我可以找到最接近的NA
值的索引?
'位置(is.na,head(dat $ KEY,8),right = TRUE)'也許? – thelatemail
可能'max(which(is.na(df [df $ INDEX <= 8,] $ KEY)))'? – SymbolixAU
'Position'方法是我還沒有考慮過的,所以我會嘗試一下並檢查系統時間以查看其效率,謝謝!關於使用'max(儘管這是(is.na),我一直在使用該方法,但效率非常低,因爲函數必須遍歷整個列並在返回最大索引之前定位每個「NA」值。理想情況下,我想從索引位置向後搜索列,以便在搜索停止時遇到第一個「NA」值。 – ThePlowKing