基本上,我有一个非常大的数据帧/数据表,我想搜索一列的第一个和最接近的值,它小于我当前的索引位置。在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