我有一個txt數據文件列表。它們中的每一個都是參與者在一組任務中採取的所有行動的記錄。對一個任務一個例子一塊數據是:計算R中其他字符串前面的字符串數
[245] "2015-02-20 11:11:02| 134602| end of mat task (passed: 4/5)"
[246] "2015-02-20 11:11:02| 134599| step E9 abandoned - skipping to next"
[247] "2015-02-20 11:11:01| 133596| step E9 bad choice - error limit reached"
[248] "2015-02-20 11:10:47| 120007| intruder D started"
[249] "2015-02-20 11:10:47| 119792| step E9 bad choice"
[250] "2015-02-20 11:10:38| 110857| step E9 started"
[251] "2015-02-20 11:10:37| 109844| step E1 success"
[252] "2015-02-20 11:10:28| 101030| step E1 started"
[253] "2015-02-20 11:10:27| 100018| step D10 success"
[254] "2015-02-20 11:10:07| 79625| step D10 started"
[255] "2015-02-20 11:10:06| 78609| step C12 success"
[256] "2015-02-20 11:10:02| 74713| step C12 bad choice"
[257] "2015-02-20 11:09:50| 62673| step C12 started"
[258] "2015-02-20 11:09:49| 61642| step B8 success"
[259] "2015-02-20 11:09:47| 60003| intruder B started"
[260] "2015-02-20 11:09:33| 46047| step B8 started"
[261] "2015-02-20 11:09:33| 46032| mats: B8,C12,D10,E1,E9"
[262] "2015-02-20 11:09:33| 46032| mat task: B8,C12,D10,E1,E9 displayed..."
現在,我的列表中的每個元素我需要的,只有當它的「成功之後出現計數的時間顯示「不錯的選擇」的消息,但數「,所以我需要計算一個人犯下錯誤併成功糾正錯誤的實例的數量(數據從底部保存到頂部,所以更新的事件高於舊的事件)。
其次,程序中有一些入侵者任務是隨機激活的,並且可能以「入侵者...」(例如「入侵者B已啓動」)開始的消息可能出現在「不良選擇」和「成功」消息(上例中不是這種情況,但它可能發生在數據中)。所以我還需要包含兩個消息之間出現「入侵者...」消息(但不包括其他消息)的實例。
我將不勝感激關於如何處理這個問題最好的方法。
除去前期的入侵者( '不錯的選擇',your_data [grep的( '成功',your_data)+ 1],值= TRUE)'來檢查行之前或之後(更改爲-1)的成功... – drmariod
如果你不想使用你不明白的單線程,只是循環你的數據,當你成功時,檢查下一個是否是一個不好的選擇。如果是,請增加你的櫃檯。在R中這樣做並不是一種高效的方式,但它是實現它的算法直接方式,您應該可以編寫它...使用'grep'來檢查一行是否包含「success」或「bad choice」或「入侵者」。坦率地說,如果你不知道如何處理這個簡單的問題,你應該怎麼做才能做出一個好的和簡單的循環。 –
我們可以幫助您糾正您嘗試過的內容,如果顯示它。 –