請看看這個簡單的數據幀:循環索引在迭代
1 4 a 2 5 b 3 6 c 4 7 d 5 8 e 6 9 f 7 10 g
忽略的第三列現在。我想創建一個帶有二進制變量的第四列,表示特定行是前一行的延續。
讓我說明,
1 4 a 1 2 5 b 0 3 6 c 0 4 7 d 1 5 8 e 0 6 9 f 0 7 10 g 1
第一行,我們開始用「1變爲4」,這是我們的基礎,路徑的起點。 在下一行我們有「2到5」,但由於我們已經在4,所以2號不是一個延續,所以第4列得到一個「0」。這一行被我們的基地放棄了。 在下一行「3到6」,由於我們已經在4,我們應該重新開始,因此我們應該從4開始重新啓動。
這就是接下來發生的情況......「4轉到7」連接第一行並因爲第四列獲得「1」。 同樣,只有行「7去10」重新連接路徑,並獲得「1」最終我想篩選「1」,因爲字母列有重要的信息。但dplyr很容易。忘掉它。
我的失敗方法是這樣的:我創建了一個循環與i和j,這將搜索時,列2中的值將等於列1中的值,進一步下降。問題是例如行「2去5」也連接行「5去8」,並會收到一個「1」
我看不到如何指示循環找到第一個連接,「4走7」,使用該發現作爲新的基地。只有這樣,下一個積極的回報是以7開頭的行。
我的頭疼。我希望有一個頭腦冷靜的人能夠向我展示光明。
謝謝你們。
大衛的回答是有點更簡單,使之更靈活的測試原始數據。儘管如此,我從長遠來看也是如此,所以我很感謝你的解決方案。我會仔細研究你的代碼,以便表示對你的努力的讚賞,但是也爲我的知識增加一個技巧。也許你可以解釋「next_one」函數是如何工作的。它似乎比基礎教程更先進。順便說一句,我不能upvote你的答案,因爲我沒有足夠的聲望點。 –
@RandomLuck不要擔心選票,他們不會打動我的孫子。至於關於函數如何工作的解釋,我將編輯我的代碼幷包含註釋。 –