Je dispose d'un énorme ensemble de données (plus de 2 millions de lignes de plus de 100 variables ; voici un petit échantillon). Pour chaque subj_trial
je veux trouver la première occurrence de chaque variable unique contenant ".wav" dans le groupe message
. Il doit s'agir d'un simple contenu, et non d'une fin (c'est-à-dire *.wav), car certaines lignes contiennent un grand nombre d'informations dans le fichier message
(non illustrés dans l'exemple, désolé).
Il serait possible de produire un data.frame ne contenant que ces trois colonnes, mais ce n'est pas nécessaire. Plus tard, j'aurai besoin d'utiliser la fonction timestamp
pour les analyses.
J'ai trouvé cette question : Extraire des lignes pour la première occurrence d'une variable dans un cadre de données Mais je n'arrive pas à adapter cet exemple au mien.
Voici quelques exemples de données :
subj_trial message timestamp
1 1_1 message 459 755616
2 1_1 . 755618
3 1_1 test1.wav 755662
4 1_1 . 765712
5 1_1 test1.wav 767918
6 1_2 . 769342
7 1_2 test2.wav 775662
8 1_2 . 786412
9 1_2 test2.wav 797460
10 1_2 . 807626
11 1_3 test3.wav 817794
12 1_3 warning 11 827960
13 2_1 message 481 817313
14 2_1 test1.wav 817347
15 2_1 . 834959
16 2_1 test1.wav 855007
17 2_1 . 880107
18 2_2 . 895723
19 2_2 test2.wav 922671
20 2_2 . 958003
21 2_2 test2.wav 994385
22 2_3 . 1016217
23 2_3 test3.wav 1036899
24 2_3 . 1047331
25 2_3 test3.wav 1142527
Il s'agit là d'un tout petit exemple de ce que j'ai à faire ici. Pour chaque subj_trial
il y a probablement 3000 lignes, et il y a plus de 700 groupes.
Voici un exemple de ce que j'aimerais avoir.
subj_trial message timestamp
1 1_1 test1.wav 755662
2 1_2 test2.wav 775662
3 1_3 test3.wav 817794
4 2_1 test1.wav 817347
5 2_2 test2.wav 922671
6 2_3 test3.wav 1036899
J'ai trouvé le moyen d'obtenir les valeurs uniques en message
sur l'ensemble de la base de données :
unique_message <- df[match(unique(df$message), df$message),]
Mais je n'arrive pas à trouver comment le faire par groupe. J'ai également essayé d'utiliser group_by
dans le dplyr
mais cela ne fonctionne pas non plus. Ayez pitié et montrez-moi le chemin, mes amis. Merci de votre compréhension.