2017-01-09 8 views
8

मैं एक डेटा फ्रेम, जहाँ मैं नाम और एक्वायर्ड द्वारा समूह चर करना चाहते हैं, लेकिन केवल चयन समूहों जो 10कैसे करें सशर्त आर में प्रत्येक समूह में चयन/फ़िल्टर मान

यहाँ है की एक स्थिति में होते हैं मेरे डेटा फ्रेम का एक उदाहरण।

  Name   Acquired  Position Salary 
1   Adam Dunn*  Amateur Draft  7 250000 
2   Adam Dunn*  Amateur Draft  7 400000 
3   Adam Dunn*  Amateur Draft  7 445000 
4   Adam Dunn*  Amateur Draft  7 4600000 
5   Adam Dunn*  Amateur Draft  7 7500000 
6   Adam Dunn*  Amateur Draft  7 10500000 
7   Adam Dunn*  Amateur Draft  7 13000000 
8   Adam Dunn*  Free Agency  3 8000000 
9   Adam Dunn*  Free Agency  3 12000000 
10  Adam Dunn*  Free Agency  10 12000000 
11  Adam Dunn*  Free Agency  10 14000000 
12  Adam Dunn*  Free Agency  10 15000000 
13  Adam Dunn*  Free Agency  10 15000000 
14  Adam LaRoche*  Amateur Draft  3 300000 
15  Adam LaRoche*  Amateur Draft  3 300000 
16  Adam LaRoche*  Amateur Draft  3 337500 
17  Adam LaRoche*  Amateur Draft  3 337500 
18  Adam LaRoche*  Amateur Draft  3 420000 
19  Adam LaRoche*  Amateur Draft  3 420000 
20  Adam LaRoche*    Traded  3 3200000 
21  Adam LaRoche*    Traded  3 5000000 
22  Adam LaRoche*    Traded  3 7050000 
23  Adam LaRoche*  Free Agency  3 4500000 
24  Adam LaRoche*  Free Agency  3 7000000 
25  Adam LaRoche*  Free Agency  3 8000000 
26  Adam LaRoche*  Free Agency  3 10000000 
27  Adam LaRoche*  Free Agency  3 12000000 
28  Adam LaRoche*  Free Agency  10 12000000 
29  Adam Lind*  Amateur Draft  10 411800 
30  Adam Lind*  Amateur Draft  10 550000 
31  Adam Lind*  Amateur Draft  3 5150000 
32  Adam Lind*  Amateur Draft  3 5000000 
33  Adam Lind*  Amateur Draft  3 5000000 
34  Adam Lind*  Amateur Draft  3 7000000 
35  Adam Lind*    Traded  3 7500000 
36 Adrian Gonzalez*    Traded  10 316000 
37 Adrian Gonzalez*    Traded  3 327500 
38 Adrian Gonzalez*    Traded  3 500000 
39 Adrian Gonzalez*    Traded  3 875000 
40 Adrian Gonzalez*    Traded  3 3125000 
41 Adrian Gonzalez*    Traded  3 4875000 
42 Adrian Gonzalez*    Traded  3 6300000 
43 Adrian Gonzalez*    Traded  3 21000000 
44 Adrian Gonzalez*    Traded  3 21000000 
45 Adrian Gonzalez*    Traded  3 21000000 
46 Adrian Gonzalez*    Traded  3 21857000 
47 Alan Bannister    Traded  10 350000 
48  Albert Belle  Amateur Draft  9 68000 
49  Albert Belle  Amateur Draft  10 117000 
50  Albert Belle  Amateur Draft  7 130000 
51  Albert Belle  Amateur Draft  10 175000 
52  Albert Belle  Amateur Draft  7 1675000 
53  Albert Belle  Amateur Draft  7 2775000 
54  Albert Belle  Amateur Draft  7 4500000 
55  Albert Belle  Amateur Draft  7 5700000 
56  Albert Belle  Free Agency  7 10000000 
57  Albert Belle  Free Agency  7 10000000 
58  Albert Pujols  Amateur Draft  5 200000 
59  Albert Pujols  Amateur Draft  7 600000 
60  Albert Pujols  Amateur Draft  7 900000 
61  Albert Pujols  Amateur Draft  3 7000000 
62  Albert Pujols  Amateur Draft  3 11000000 
63  Albert Pujols  Amateur Draft  3 14000000 
64  Albert Pujols  Amateur Draft  3 12937813 
65  Albert Pujols  Amateur Draft  3 13870949 
66  Albert Pujols  Amateur Draft  3 14427326 
67  Albert Pujols  Amateur Draft  3 14595953 
68  Albert Pujols  Amateur Draft  3 14508395 
69  Albert Pujols  Free Agency  3 12000000 
70  Albert Pujols  Free Agency  10 16000000 
71  Albert Pujols  Free Agency  3 23000000 
72  Albert Pujols  Free Agency  3 24000000 
73 Alex Rodriguez  Amateur Draft  6 442333 
74 Alex Rodriguez  Amateur Draft  6 442333 
75 Alex Rodriguez  Amateur Draft  6 442334 
76 Alex Rodriguez  Amateur Draft  6 1062500 
77 Alex Rodriguez  Amateur Draft  6 2162500 
78 Alex Rodriguez  Amateur Draft  6 3112500 
79 Alex Rodriguez  Amateur Draft  6 4362500 
80 Alex Rodriguez  Free Agency  6 22000000 
81 Alex Rodriguez  Free Agency  6 22000000 
82 Alex Rodriguez  Free Agency  6 22000000 
83 Alex Rodriguez    Traded  5 22000000 
84 Alex Rodriguez    Traded  5 26000000 
85 Alex Rodriguez    Traded  5 21680727 
86 Alex Rodriguez  Free Agency  5 22708525 
87 Alex Rodriguez  Free Agency  5 28000000 
88 Alex Rodriguez  Free Agency  5 33000000 
89 Alex Rodriguez  Free Agency  5 33000000 
90 Alex Rodriguez  Free Agency  5 32000000 
91 Alex Rodriguez  Free Agency  5 29000000 
92 Alex Rodriguez  Free Agency  5 28000000 
93 Alex Rodriguez    Traded  10 22000000 
94 Alexi Amarista* Amateur Free Agent  10 481000 
95 Alexi Amarista*    Traded  8 497400 
96 Alexi Amarista*    Traded  6 511100 
97 Alexi Amarista*    Traded  6 1150000 
98  Allen Craig  Amateur Draft  9 400000 
99  Allen Craig  Amateur Draft  7 414000 
100  Allen Craig  Amateur Draft  3 495000 

उत्पादन कुछ इस तरह होना चाहिए:

  Name   Acquired  Position Salary 
8   Adam Dunn*  Free Agency  3 8000000 
9   Adam Dunn*  Free Agency  3 12000000 
10  Adam Dunn*  Free Agency  10 12000000 
11  Adam Dunn*  Free Agency  10 14000000 
12  Adam Dunn*  Free Agency  10 15000000 
13  Adam Dunn*  Free Agency  10 15000000 
23  Adam LaRoche*  Free Agency  3 4500000 
24  Adam LaRoche*  Free Agency  3 7000000 
25  Adam LaRoche*  Free Agency  3 8000000 
26  Adam LaRoche*  Free Agency  3 10000000 
27  Adam LaRoche*  Free Agency  3 12000000 
28  Adam LaRoche*  Free Agency  10 12000000 
29  Adam Lind*  Amateur Draft  10 411800 
30  Adam Lind*  Amateur Draft  10 550000 
31  Adam Lind*  Amateur Draft  3 5150000 
32  Adam Lind*  Amateur Draft  3 5000000 
33  Adam Lind*  Amateur Draft  3 5000000 
34  Adam Lind*  Amateur Draft  3 7000000 
35  Adam Lind*    Traded  3 7500000 
36 Adrian Gonzalez*    Traded  10 316000 
37 Adrian Gonzalez*    Traded  3 327500 
38 Adrian Gonzalez*    Traded  3 500000 
39 Adrian Gonzalez*    Traded  3 875000 
40 Adrian Gonzalez*    Traded  3 3125000 
41 Adrian Gonzalez*    Traded  3 4875000 
42 Adrian Gonzalez*    Traded  3 6300000 
43 Adrian Gonzalez*    Traded  3 21000000 
44 Adrian Gonzalez*    Traded  3 21000000 
45 Adrian Gonzalez*    Traded  3 21000000 
46 Adrian Gonzalez*    Traded  3 21857000 
47 Alan Bannister    Traded  10 350000 
48  Albert Belle  Amateur Draft  9 68000 
49  Albert Belle  Amateur Draft  10 117000 
50  Albert Belle  Amateur Draft  7 130000 
51  Albert Belle  Amateur Draft  10 175000 
52  Albert Belle  Amateur Draft  7 1675000 
53  Albert Belle  Amateur Draft  7 2775000 
54  Albert Belle  Amateur Draft  7 4500000 
55  Albert Belle  Amateur Draft  7 5700000 
69  Albert Pujols  Free Agency  3 12000000 
70  Albert Pujols  Free Agency  10 16000000 
71  Albert Pujols  Free Agency  3 23000000 
72  Albert Pujols  Free Agency  3 24000000 
93 Alex Rodriguez    Traded  10 22000000 
94 Alexi Amarista* Amateur Free Agent  10 481000 

असल में, अगर मैं मैं सिर्फ सबसेट हैं सिर्फ स्थिति 10 का चयन करने के समूह द्वारा, या इस कोड लिखने चाहता था:

library(dplyr) 

df_1 <- df %>% group_by(Name, Acquired) %>% filter(Position == 10) %>% as.data.frame() 

मैं प्रत्येक समूह को रखना चाहता हूं जिसमें 10 है, और प्रत्येक समूह को फ़िल्टर न करें। इसलिए, एमेच्योर ड्राफ्ट द्वारा प्राप्त एडम डन बाहर है लेकिन एडम डुन फ्री एजेंसी है। मुझे संदेह है कि इसमें कुछ प्रकार की सशर्त फ़िल्टरिंग शामिल होगी लेकिन मुझे यकीन नहीं है कि यह क्या है।

+0

@Psidom बहुत धन्यवाद, यह काम किया! – Julien

+1

केवल बेस आर का उपयोग करना: 'सबसेट (डीएफ, एवी (स्थिति, नाम, प्राप्त, FUN = फ़ंक्शन (x)% x में 10%) == 1) ' –

+1

आप' data.table' यानी' लाइब्रेरी (डेटा का उपयोग कर सकते हैं .table); setDT (df) [, अगर (कोई भी (स्थिति == 10)) .SD,। (नाम, एक्वायर)] ' – akrun

उत्तर

2

समूहों पर फ़िल्टर करने के लिए, एक विकल्प प्रति समूह एक अद्वितीय बूलियन मान वापस करना है, जिसका उपयोग प्रसारण के कारण पूरे समूह का चयन करने के लिए किया जाएगा; अपने मामले के लिए, any को इस स्थिति के आसपास लपेटना चाहिए:

df %>% group_by(Name, Acquired) %>% filter(any(Position == 10)) %>% as.data.frame() 
संबंधित मुद्दे