मेरे पास निम्नानुसार डेटाफ्रेम है

   head(data)

   subject block trial timeLeft timeRight stim1 stim2 Chosen
1        1    13     0        0         0     2     1      2
2        1    13     1        0         1     3     2      2
3        1    13     3        0         0     3     1      1
4        1    13     4        2         0     2     3      3
5        1    13     6        1         1     1     3      1
6        1    13     7        2         2     2     1      1
...   

     
454     1006    14     0        0         0     6     5      5
455     1006    14     1        0         0     6     4      6
456     1006    14     3        0         1     4     5      4
457     1006    14     4        1         1     4     5      4
458     1006    14     6        1         2     6     4      6
  

मेरा उद्देश्य विषय और ब्लॉक के आधार पर समूह बनाना है और केवल पंक्तियों को पहले रखना है और जिसमें समय और समय दोनों शामिल हैं।

इस मामले में उत्पादन होगा

       subject block trial timeLeft timeRight stim1 stim2 Chosen
    1        1    13     0        0         0     2     1      2
    2        1    13     1        0         1     3     2      2
    3        1    13     3        0         0     3     1      1
...
   454     1006    14     0        0         0     6     5      5
   455     1006    14     1        0         0     6     4      6

आपका अग्रिम में ही बहुत धन्यवाद!

यहाँ डेटा की संरचना है

'data.frame':   64748 obs. of  8 variables:
 $ subject  : num  1 1 1 1 1 1 1 1 1 1 ...
 $ block    : int  13 13 13 13 13 13 13 13 13 13 ...
 $ trial    : int  0 1 3 4 6 7 9 10 12 13 ...
 $ timeLeft : int  0 0 0 2 1 2 2 1 3 4 ...
 $ timeRight: int  0 1 0 0 1 2 1 3 4 4 ...
 $ stim1    : int  2 3 3 2 1 2 2 3 2 2 ...
 $ stim2    : int  1 2 1 3 3 1 3 1 1 1 ...
 $ Chosen   : int  2 2 1 3 1 1 2 1 2 2 ...
0
user15791858 9 नवम्बर 2021, 08:47

2 जवाब

आप केवल उन पंक्तियों के लिए फ़िल्टर कर सकते हैं जो शर्त को पूरा करती हैं और फिर समूह

data %>% 
    filter(timeLeft > 0  & timeRight > 0) %>%
    group_by(subject, block)
0
Stuart Mills 9 नवम्बर 2021, 08:54
मैं समय से पहले सभी पंक्तियों को रखने की कोशिश कर रहा हूं == 0 और समय सही == 0 (विषय के भीतर, ब्लॉक) - पहली फ़िल्टरिंग की समस्या यह है कि विषय 1 ब्लॉक 13 के लिए दूसरी प्रविष्टि (जहां समय सही> 0 है लेकिन मैं रखना चाहता हूं इसके बाद से समय सही == 0) लेकिन अगर मैं पहले फ़िल्टर करता हूं तो हटा दिया जाएगा
 – 
user15791858
9 नवम्बर 2021, 08:58
तो पहली उदाहरण तक सब कुछ ठीक रखें जहां timeRight और timeLeft दोनों 0 हैं?
 – 
Stuart Mills
9 नवम्बर 2021, 08:59
आखिरी उदाहरण तक जहां टाइमराइट और टाइमलेफ्ट दोनों 0 हैं (प्रत्येक ब्लॉक और विषय के भीतर)
 – 
user15791858
9 नवम्बर 2021, 09:01

यदि आप सभी पंक्तियों को timeLeft से पहले रखना चाहते हैं और timeRight 0 हैं, तो आप इस तरह से प्रयास कर सकते हैं।

आंकड़े

   subject block trial timeLeft timeRight stim1 stim2 Chosen
1        1    13     0        0         0     2     1      2
2        1    13     1        0         1     3     2      2
3        1    13     3        0         0     3     1      1
4        1    13     4        2         0     2     3      3
5        1    13     6        1         1     1     3      1
6        1    13     7        2         2     2     1      1
7     1006    14     0        0         1     6     5      5
8     1006    14     0        0         0     6     5      5
9     1006    14     1        0         0     6     4      6
10    1006    14     3        0         1     4     5      4
11    1006    14     4        1         1     4     5      4
12    1006    14     6        1         2     6     4      6

मैं subject:1006 के लिए एक और पंक्ति जोड़ता हूं, पहली पंक्ति बनाने के लिए 0,0 नहीं है।

कोड

df %>%
  group_by(subject) %>%
  mutate(key = max(which((timeLeft == 0 & timeRight ==0)))) %>%
  slice(1:key)

  subject block trial timeLeft timeRight stim1 stim2 Chosen   key
    <int> <int> <int>    <int>     <int> <int> <int>  <int> <int>
1       1    13     0        0         0     2     1      2     3
2       1    13     1        0         1     3     2      2     3
3       1    13     3        0         0     3     1      1     3
4    1006    14     0        0         1     6     5      5     3
5    1006    14     0        0         0     6     5      5     3
6    1006    14     1        0         0     6     4      6     3
0
Park 9 नवम्बर 2021, 09:53