Ich habe folgenden Datenrahmen von Mausaktionen:Parsing Ereignisfolge in R-Datenrahmen
Timestamp1, Timestamp2, button, state, x, y
49.8709998131,49.7949999999,NoButton,Move,498,580
49.8709998131,49.8730000001,Left,Pressed,498,580
49.9659998417,49.983,Left,Released,498,580
50.1739997864,50.1850000001,NoButton,Move,497,580
50.7269999981,50.7310000001,NoButton,Move,495,581
51.8219997883,51.7140000002,NoButton,Move,569,617
51.8229999542,51.8390000002,NoButton,Move,633,642
52.0539999008,51.8390000002,NoButton,Move,654,650
52.0539999008,51.9329999997,NoButton,Move,719,666
52.0539999008,52.057,NoButton,Move,761,666
52.1819999218,52.1979999999,NoButton,Move,763,663
52.5659999847,52.5720000002,NoButton,Move,763,659
52.6779999733,52.6809999999,NoButton,Move,778,658
52.893999815,52.6809999999,NoButton,Move,783,656
52.8949999809,52.8999999999,NoButton,Move,799,650
53.0549998283,53.0559999999,NoButton,Move,800,649
53.2349998951,53.2429999998,NoButton,Move,805,645
53.2349998951,53.2429999998,Left,Pressed,805,645
53.3509998322,53.2590000001,NoButton,Drag,807,644
53.3509998322,53.352,Left,Released,807,644
53.8619999886,53.8670000001,NoButton,Move,808,644
53.9739999771,53.9759999998,NoButton,Move,809,645
54.0779998302,54.085,NoButton,Move,802,686
54.1899998188,54.085,NoButton,Move,802,691
54.1909999847,54.1949999998,NoButton,Move,796,728
54.3019998074,54.304,NoButton,Move,795,745
54.4069998264,54.4130000002,NoButton,Move,796,756
54.5629999638,54.5529999998,NoButton,Move,801,766
54.751999855,54.7250000001,NoButton,Move,803,766
54.8379998207,54.8500000001,NoButton,Move,807,766
54.8389999866,54.8500000001,Left,Pressed,807,766
54.9709999561,54.9750000001,NoButton,Drag,808,766
54.9709999561,54.9750000001,Left,Released,808,766
55.3819999695,55.3960000002,NoButton,Move,809,766
55.5979998112,55.4890000001,NoButton,Move,801,760
55.5989999771,55.6140000001,NoButton,Move,790,752
Ich mag spezifische Teilfolgen analysieren, wie Linksklick:
49.8709998131,49.8730000001,Left,Pressed,498,580
49.9659998417,49.983,Left,Released,498,580
oder Drag & Drop, wie:
53.2349998951,53.2429999998,Left,Pressed,805,645
53.3509998322,53.2590000001,NoButton,Drag,807,644
53.3509998322,53.352,Left,Released,807,644
oder reine Mausbewegungen ohne Unterbrechung durch Klicks mag:
52.5659999847,52.5720000002,NoButton,Move,763,659
52.6779999733,52.6809999999,NoButton,Move,778,658
52.893999815,52.6809999999,NoButton,Move,783,656
52.8949999809,52.8999999999,NoButton,Move,799,650
53.0549998283,53.0559999999,NoButton,Move,800,649
53.2349998951,53.2429999998,NoButton,Move,805,645
Mein heuristischer Weg besteht darin, über die gesamte Sequenz mit einer for-Schleife zu iterieren und jedes Element vor und nach dem tatsächlichen Element zu untersuchen, abhängig von den spezifischen Details der gewünschten Untersequenz. Das scheint auf der einen Seite sehr mühselig zu sein und passt nicht zu Rs ansonsten eleganten, auf die Anwendung abgestimmten kurzen Lösungen. Könnte jemand professioneller vorschlagen?
Ich denke, ich wiederhole das Problem auf eine allgemeinere Art und Weise. In Anbetracht der folgenden Datenrahmen:
Timestamp, State1, x, y
50.1739997864,a,497,580
50.7269999981,a,495,581
51.8219997883,a,569,617
51.8229999542,b,633,642
52.0539999008,b,654,650
52.0539999008,a,719,666
52.0539999008,a,761,666
52.1819999218,b,763,663
52.5659999847,c,763,659
52.6779999733,b,778,658
52.893999815,a,783,656
52.8949999809,a,799,650
53.0549998283,b,800,649
53.2349998951,a,805,645
53.2349998951,b,805,645
53.3509998322,b,807,644
Wie man Antworten auf die Fragen erhalten könnte wie: - Was sind die Untergruppen mit kontinuierlichen State1 == sind „a“ Reihen? - Welches sind die Teilmengen mit Anfang und Ende einer Zeile mit State1 == "a" und mindestens eine Zeile mit State1! = "A" zwischen ihnen? - Was ist die verstrichene Zeit/Euklidische Entfernung zweier benachbarter Reihen, wo im ersten Fall State1! = "A" und im zweiten Fall State1 == "b"?
Wäre schön, genauer zu wissen, was Ihre gewünschte Leistung wäre. Möchten Sie einen Vektor mit Zeichenfolgen, die "Verschieben, Linksklick, Verschieben, Drag Drop, Verschieben, Drag Drop, Verschieben" lauten? – Antares42
Lesen Sie zuerst Ihre Daten mit 'read.csv' ein, so dass Sie eine Untermenge bilden können. Es kann sich lohnen, eine Indexspalte ('df $ id <- seq_along (df $ Timestamp1) ') hinzuzufügen, damit Sie erkennen können, ob Ereignisse aufeinander folgen; 'data.table :: rleid' kann ebenfalls hilfreich sein. Wirklich, es ist schwer, Ihnen eine gute Antwort zu geben, ohne uns zu sagen, wie es aussehen soll. – alistaire
Sie könnten [diesen Beitrag] (http://stackoverflow.com/questions/33027611/how-to-index-a-vector-sequence-within-a-vector-sequence) hilfreich finden. Verwenden Sie eine der Funktionen dort -say 'FUN' - wie' schneiden (FUN (c ("Links", "NoButton", "Left"), as.character (DF $ button)), FUN (c ("gedrückt" , "Drag", "Released"), as.character (DF $ state))) gibt die Startzeilenpositionen Ihres spezifischen Musters an. –