Mam ramki danych, gdzie chcę zmiennych grupy według nazwisk i nabytych, ale tylko wybrać grupy, które zawierają pozycję 10.Jak warunkowo wybierz wartości/filtrów w każdej grupie w R
jest tutaj przykład mojej ramki danych.
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
Wyjście powinno być coś takiego:
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
Zasadniczo, jeśli chciałem wybrać tylko pozycji 10 przez grupę Chciałbym tylko podzbiór lub napisać ten kod:
library(dplyr)
df_1 <- df %>% group_by(Name, Acquired) %>% filter(Position == 10) %>% as.data.frame()
Chcę zachować każdą grupę, która ma 10, i odfiltrować każdą grupę, która tego nie robi. Tak, Adam Dunn Acquired z Amateur Draft jest już dostępny, ale Adama Dunn Free Agency jest w. Podejrzewam, że wymagałoby to pewnego rodzaju filtrowania warunkowego, ale nie jestem pewien co to jest.
@Psidom Wielkie dzięki, zadziałało! – Julien
Używanie tylko podstawowego podzbioru R: '(DF, ave (pozycja, nazwa, nabyte, FUN = funkcja (x) 10% w% x) == 1)' –
Możesz użyć 'data.table' czyli' library (data) .table); setDT (df) [, if (dowolna (Pozycja == 10)) .SD,. (Nazwa, Akwizycja)] ' – akrun