1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [Speel van musiek] 3 00:00:09,800 --> 00:00:13,014 4 00:00:13,014 --> 00:00:13,680 Dustin TRAN: Hi. 5 00:00:13,680 --> 00:00:14,980 My naam se Dustin. 6 00:00:14,980 --> 00:00:18,419 So ek sal aanbied Data-analise in R. 7 00:00:18,419 --> 00:00:19,710 Net 'n bietjie oor myself. 8 00:00:19,710 --> 00:00:24,320 Ek is tans 'n nagraadse student in die Ingenieurswese en Toegepaste Wetenskappe. 9 00:00:24,320 --> 00:00:28,330 Ek bestudeer 'n kruising van masjien leer en statistieke 10 00:00:28,330 --> 00:00:31,375 so Data-analise in R is regtig fundamenteel tot watter 11 00:00:31,375 --> 00:00:33,790 Ek doen op 'n daaglikse basis. 12 00:00:33,790 --> 00:00:35,710 >> En R is veral goed vir data-analise 13 00:00:35,710 --> 00:00:39,310 want dit is baie goed vir prototyping. 14 00:00:39,310 --> 00:00:43,590 En gewoonlik wanneer jy doen 'n soort van data-analise, 'n baie van die probleme 15 00:00:43,590 --> 00:00:44,920 gaan kognitiewe. 16 00:00:44,920 --> 00:00:48,700 En so jy net wil hê 'n paar baie goeie taal wat 17 00:00:48,700 --> 00:00:53,770 is net goed vir doen ingeboude funksies, in teenstelling 18 00:00:53,770 --> 00:00:57,430 te om te gaan met 'n lae vlak dinge. 19 00:00:57,430 --> 00:01:01,040 So in die begin, is ek net gaan bekend te stel wat R, hoekom sou 20 00:01:01,040 --> 00:01:04,540 jy wil om dit te gebruik, en gaan dan oor in 'n paar demo, 21 00:01:04,540 --> 00:01:07,060 en net gaan van daar. 22 00:01:07,060 --> 00:01:08,150 >> So, wat is R? 23 00:01:08,150 --> 00:01:11,180 R is net 'n taal ontwikkel vir statistiese rekenaar 24 00:01:11,180 --> 00:01:12,450 en visualisering. 25 00:01:12,450 --> 00:01:16,000 So, wat dit beteken is dat dit is 'n baie goeie taal 26 00:01:16,000 --> 00:01:22,400 vir enige soort van ding wat handel oor onsekerheid of data visualisering. 27 00:01:22,400 --> 00:01:24,850 So jy het al hierdie waarskynlikheidsverdelings. 28 00:01:24,850 --> 00:01:27,140 Daar gaan wees ingeboude funksies. 29 00:01:27,140 --> 00:01:31,650 Jy sal ook 'n uitstekende plot pakkette. 30 00:01:31,650 --> 00:01:34,110 >> Python is 'n ander meeding taal vir data. 31 00:01:34,110 --> 00:01:40,020 En een ding wat ek vind dat R is baie beter is visualisering. 32 00:01:40,020 --> 00:01:45,200 So, wat jy sal sien in die demo as goed is net 'n baie intuïtief taal 33 00:01:45,200 --> 00:01:48,050 wat werk net baie goed. 34 00:01:48,050 --> 00:01:53,140 Dit is ook 'n gratis en open source, as enige ander goeie taal wat ek dink. 35 00:01:53,140 --> 00:01:55,440 >> En hier, 'n klomp van die net sleutelwoorde gegooi by jou. 36 00:01:55,440 --> 00:02:00,450 Dit is dinamiese, wat beteken as jy 'n spesifieke tipe wat aan 'n voorwerp 37 00:02:00,450 --> 00:02:02,025 as wat dit sal net verander op die vlieg. 38 00:02:02,025 --> 00:02:05,670 Dit is lui so dit is slim oor hoe dit berekeninge. 39 00:02:05,670 --> 00:02:12,250 Funksionele beteken dit kan regtig werk gebaseer af van funksies so anything-- 40 00:02:12,250 --> 00:02:16,910 enige vorm van manipulasie jy doen, sal dit gebaseer word funksies af. 41 00:02:16,910 --> 00:02:20,162 >> So binêre operateurs, byvoorbeeld, is net inherent funksies. 42 00:02:20,162 --> 00:02:21,870 En alles wat jy gaan doen, is 43 00:02:21,870 --> 00:02:24,690 gaan om te loop af funksies self. 44 00:02:24,690 --> 00:02:27,140 En georiënteerde dan voorwerp as well. 45 00:02:27,140 --> 00:02:30,930 >> So hier is 'n Kletskerk plot. 46 00:02:30,930 --> 00:02:34,350 Nie net omdat ek voel soos Kletskerk is fundamenteel tot enige soort 47 00:02:34,350 --> 00:02:37,770 van aanbieding, maar omdat Ek voel soos dit werklik 48 00:02:37,770 --> 00:02:42,160 hamers op die punt dat 'n groot deel van die tyd wanneer jy doen 'n soort van data 49 00:02:42,160 --> 00:02:46,570 analise, die probleem is nie soveel hoe vinnig dit loop, 50 00:02:46,570 --> 00:02:49,850 maar hoe lank dit gaan neem om die taak te programmeer. 51 00:02:49,850 --> 00:02:54,112 So hier is net te ontleed of strategie a of b is meer doeltreffend. 52 00:02:54,112 --> 00:02:55,820 Dit gaan wees iets wat jy 53 00:02:55,820 --> 00:02:58,290 gaan 'n baie om te hanteer in soort van lae-vlak tale 54 00:02:58,290 --> 00:03:03,440 waar jy met seg foute, geheuetoekenning, initializations, 55 00:03:03,440 --> 00:03:05,270 selfs die maak van die ingeboude funksies. 56 00:03:05,270 --> 00:03:09,920 En hierdie dinge is al hanteer baie, baie elegant in R. 57 00:03:09,920 --> 00:03:12,839 >> Dus net dit te hamer punt, die grootste knelpunt 58 00:03:12,839 --> 00:03:13,880 gaan kognitiewe wees. 59 00:03:13,880 --> 00:03:17,341 So data-analise is 'n baie harde probleem. 60 00:03:17,341 --> 00:03:19,340 Of jy doen masjien leer of jy 61 00:03:19,340 --> 00:03:22,550 doen net 'n soort van basiese data eksplorasie, 62 00:03:22,550 --> 00:03:25,290 jy wil nie hê 'n dokument te neem 63 00:03:25,290 --> 00:03:27,440 en dan stel iets wat elke keer as jy 64 00:03:27,440 --> 00:03:31,010 wil om te sien wat 'n kolom lyk, wat veral inskrywings in 'n matriks 65 00:03:31,010 --> 00:03:32,195 lyk. 66 00:03:32,195 --> 00:03:34,320 So jy net wil hê 'n paar baie mooi koppelvlak 67 00:03:34,320 --> 00:03:37,740 jy kan 'n eenvoudige funksie hardloop dat indekse wat 68 00:03:37,740 --> 00:03:41,870 jy wil en net loop dit van daar af. 69 00:03:41,870 --> 00:03:44,190 En jy moet domein spesifieke tale vir hierdie. 70 00:03:44,190 --> 00:03:51,750 En R sal regtig help jy definieer die probleem en los dit op hierdie wyse. 71 00:03:51,750 --> 00:03:58,690 >> So hier is 'n plot wat programmering gewildheid van R as dit is weg met verloop van tyd. 72 00:03:58,690 --> 00:04:04,060 So soos jy kan sien, soos 2013 of so dit is net opgeblaas geweldig. 73 00:04:04,060 --> 00:04:09,570 En dit is net as gevolg van daardie groot neiging in die IT-industrie 74 00:04:09,570 --> 00:04:10,590 oor die groot data. 75 00:04:10,590 --> 00:04:13,010 Ook, nie net die tegnologie bedryf, maar regtig 76 00:04:13,010 --> 00:04:16,490 enige bedryf that-- omdat 'n groot deel van die nywerhede 77 00:04:16,490 --> 00:04:20,589 is soort van fundamentele te probeer om hierdie probleme op te los. 78 00:04:20,589 --> 00:04:24,590 En gewoonlik, kan jy 'n paar goeie het manier van meet hierdie probleme 79 00:04:24,590 --> 00:04:29,720 of selfs definieer of los met behulp van data. 80 00:04:29,720 --> 00:04:35,430 So ek dink nou R is die 11de gewildste taal op TIOBE 81 00:04:35,430 --> 00:04:38,200 en dit groei sedertdien. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> So hier is 'n paar meer kenmerke van R. Dit het 84 00:04:43,080 --> 00:04:46,900 'n enorme aantal pakkette en vir al hierdie verskillende dinge. 85 00:04:46,900 --> 00:04:52,470 So 'n tyd wat jy het 'n sekere probleem, die meeste 86 00:04:52,470 --> 00:04:55,060 die tyd R sal daardie funksie vir jou. 87 00:04:55,060 --> 00:04:58,520 Dus, of jy wil bou 'n soort van die masjien 88 00:04:58,520 --> 00:05:02,770 leer algoritme genoem Ewekansige Forest of besluit Bome, 89 00:05:02,770 --> 00:05:07,530 of selfs probeer om die gemiddelde te neem 'n funksie of enige van hierdie dinge, 90 00:05:07,530 --> 00:05:10,000 R sal dit. 91 00:05:10,000 --> 00:05:14,190 >> En as jy dink jy omgee optimalisering, een ding wat algemeen 92 00:05:14,190 --> 00:05:17,430 is dat na jy prototyping gedoen 'n soort van 'n hoë-vlak taal, 93 00:05:17,430 --> 00:05:19,810 jy sal gooi dat in-- sal jy net hawe wat oor 94 00:05:19,810 --> 00:05:21,550 sommige lae-vlak taal. 95 00:05:21,550 --> 00:05:26,090 Wat is goed oor R is dat sodra jy gedoen prototyping, kan jy hardloop C ++, 96 00:05:26,090 --> 00:05:29,510 of Fortran, of enige van hierdie laer vlak kinders direk in R. 97 00:05:29,510 --> 00:05:32,320 So dit is een regtig koel funksie oor R, 98 00:05:32,320 --> 00:05:35,930 as jy regtig omgee die optimalisering punt. 99 00:05:35,930 --> 00:05:39,490 >> En dit is ook baie goeie vir web visualisaties. 100 00:05:39,490 --> 00:05:43,530 So D3.js, byvoorbeeld, is Ek dink 'n ander seminaar 101 00:05:43,530 --> 00:05:45,130 dat ons wat vandag. 102 00:05:45,130 --> 00:05:48,510 En dit is regtig awesome vir doen interaktiewe visualisaties. 103 00:05:48,510 --> 00:05:54,460 En D3.js aanvaar dat jy 'n soort van data te geplot word 104 00:05:54,460 --> 00:05:58,080 en R is 'n goeie manier om te kan doen die data-analise voordat jy voer dit 105 00:05:58,080 --> 00:06:04,220 oor te D3.js of selfs net loop D3.js beveel in R self, 106 00:06:04,220 --> 00:06:08,240 sowel as al hierdie ander biblioteke sowel. 107 00:06:08,240 --> 00:06:13,041 >> So dit was net die bekendstelling van wat is R en waarom jy dalk dit gebruik. 108 00:06:13,041 --> 00:06:14,790 So hopelik, ek het oortuig dat jy iets 109 00:06:14,790 --> 00:06:18,460 oor net om te probeer om te sien wat dit is. 110 00:06:18,460 --> 00:06:23,930 So ek gaan om voort te gaan en gaan deur sommige beginsels oor R voorwerpe 111 00:06:23,930 --> 00:06:26,150 en wat jy kan regtig nie. 112 00:06:26,150 --> 00:06:29,690 >> So hier is net 'n n klomp van die wiskunde-opdragte. 113 00:06:29,690 --> 00:06:35,000 So sê you're-- jy wil bou taal jouself en jy wil net 114 00:06:35,000 --> 00:06:38,080 'n klomp van verskillende gereedskap te hê. 115 00:06:38,080 --> 00:06:42,520 Enige soort van operasie jy dink jy wil wil hê, is pretty much gaan wees in R. 116 00:06:42,520 --> 00:06:44,150 >> So hier is 2 plus 2. 117 00:06:44,150 --> 00:06:46,090 Hier is 2 keer pi. 118 00:06:46,090 --> 00:06:51,870 R het 'n klomp van die gebou-in konstantes dat jy gereeld sal gebruik soos pi, e. 119 00:06:51,870 --> 00:06:56,230 >> En dan, hier is 7 plus runif, so runif van 1. 120 00:06:56,230 --> 00:07:02,450 Dit is 'n funksie wat genereer een ewekansige uniform 0-1. 121 00:07:02,450 --> 00:07:04,400 En dan is daar 3 tot die krag van 4. 122 00:07:04,400 --> 00:07:06,430 Daar is vierkantswortels. 123 00:07:06,430 --> 00:07:07,270 >> Daar is log. 124 00:07:07,270 --> 00:07:14,500 So teken sal nederig doen eksponensiële deur self. 125 00:07:14,500 --> 00:07:18,337 En dan, as jy spesifiseer 'n basis, dan jy kan doen wat basis wat jy wil. 126 00:07:18,337 --> 00:07:19,920 En dan is hier is 'n paar ander opdragte. 127 00:07:19,920 --> 00:07:22,180 So jy het 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Dan moet jy die res. 129 00:07:24,910 --> 00:07:27,110 Dan moet jy wetenskaplike notasie as jy ook 130 00:07:27,110 --> 00:07:34,060 wil net meer te doen en meer ingewikkeld dinge. 131 00:07:34,060 --> 00:07:37,320 >> So hier is opdrag. 132 00:07:37,320 --> 00:07:40,830 So tipies opdragte in R is gedoen met 'n pyl 133 00:07:40,830 --> 00:07:43,440 so dit is minder as en dan die koppelteken. 134 00:07:43,440 --> 00:07:47,250 So hier is ek net toeken 3 aan die veranderlike val. 135 00:07:47,250 --> 00:07:50,160 >> En dan is ek uit te druk val en dan is dit druk uit drie. 136 00:07:50,160 --> 00:07:53,920 By verstek in R tolk, dit sal dinge uit te druk vir jou 137 00:07:53,920 --> 00:07:57,280 sodat jy nie hoef te spesifiseer druk van 'n val enige tyd wat jy wil hê om iets te druk. 138 00:07:57,280 --> 00:08:00,200 Jy kan net nie val en dan sal dit doen dit vir jou. 139 00:08:00,200 --> 00:08:04,380 >> Ook, kan jy gebruik gelyk tegnies as 'n opdrag operateur. 140 00:08:04,380 --> 00:08:07,190 Daar is effense subtiliteite tussen die gebruik van die pyl 141 00:08:07,190 --> 00:08:10,730 operateur en die gelykes operateur vir opdragte. 142 00:08:10,730 --> 00:08:15,470 Meestal deur konvensie, almal sal net gebruik die pyl operateur. 143 00:08:15,470 --> 00:08:21,850 >> En hier, ek toewys skuins notasie genoem 1 kolon 6. 144 00:08:21,850 --> 00:08:26,010 Dit genereer 'n vektor van 1 tot 6. 145 00:08:26,010 --> 00:08:29,350 En dit regtig lekker want dan jy net ken die vektor val 146 00:08:29,350 --> 00:08:34,270 en wat werk deur die self. 147 00:08:34,270 --> 00:08:37,799 >> So dit is reeds gaan van 'n single-- 'n baie intuïtief data 148 00:08:37,799 --> 00:08:41,070 struktuur van net 'n dubbele 'n soort van tipe in 'n vektor 149 00:08:41,070 --> 00:08:45,670 en wat al versamel die skalaarproduk waardes vir jou. 150 00:08:45,670 --> 00:08:50,770 So na gaan van skalaar, jy het R voorwerpe en dit is 'n vektor. 151 00:08:50,770 --> 00:08:55,610 'N Vektor is 'n soort van versameling van dieselfde tipe. 152 00:08:55,610 --> 00:08:58,150 So hier is 'n klomp van die vektore. 153 00:08:58,150 --> 00:08:59,800 >> So, dit is numeriese. 154 00:08:59,800 --> 00:09:02,440 Numeriese R se manier om te sê dubbel. 155 00:09:02,440 --> 00:09:07,390 En so by verstek, enige nommer sal wees om 'n dubbel. 156 00:09:07,390 --> 00:09:13,150 >> So as jy 'c van 1.1, 3, negatiewe 5.7, die c is 'n funksie. 157 00:09:13,150 --> 00:09:16,760 Dit concatenates al drie getalle in 'n vektor. 158 00:09:16,760 --> 00:09:19,619 En dit sal so as be-- jy agterkom 3 deur homself, 159 00:09:19,619 --> 00:09:21,910 normaalweg sou jy aanvaar dat dit soos 'n heelgetal, 160 00:09:21,910 --> 00:09:25,050 maar omdat alle vektore is dieselfde tipe, 161 00:09:25,050 --> 00:09:28,660 dit is 'n vektor van dubbelspel of numeriese in hierdie geval. 162 00:09:28,660 --> 00:09:34,920 >> rnorm is 'n funksie wat standaard normale variables-- 163 00:09:34,920 --> 00:09:36,700 of standaard normale waardes. 164 00:09:36,700 --> 00:09:38,360 En ek spesifiseer twee van hulle. 165 00:09:38,360 --> 00:09:43,840 So ek doen rnorm 2, toewys om dit te devs, en dan is ek uit te druk devs. 166 00:09:43,840 --> 00:09:47,350 So dit is net twee ewekansige normale waardes. 167 00:09:47,350 --> 00:09:50,060 >> En dan SY as jy dit doen jy omgee heelgetalle. 168 00:09:50,060 --> 00:09:54,650 So dit is net oor die geheue toekenning en spaar geheue grootte. 169 00:09:54,650 --> 00:10:01,460 So wat jy wil hê om by te voeg jou nommers deur die hoofstad L. 170 00:10:01,460 --> 00:10:04,170 >> In die algemeen, is dit R se historiese notasie 171 00:10:04,170 --> 00:10:06,940 vir iets genoem lang heelgetal. 172 00:10:06,940 --> 00:10:09,880 So die meeste van die tyd, sal jy wees wat met dubbelspel. 173 00:10:09,880 --> 00:10:15,180 En as jy ooit sal later op te optimaliseer jou kode, 174 00:10:15,180 --> 00:10:18,110 jy kan net voeg hierdie L's daarna of gedurende dit 175 00:10:18,110 --> 00:10:22,280 as jy soos precognitive oor wat jy gaan om hierdie veranderlikes te doen. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> So hier is 'n karakter vektor. 178 00:10:26,890 --> 00:10:31,440 So, weereens, ek concatenating drie snare hierdie tyd. 179 00:10:31,440 --> 00:10:36,230 Let daarop dat dubbele snare en enkele snare is dieselfde in R. 180 00:10:36,230 --> 00:10:41,000 So ek het Arthur en Marvin se en so wanneer ek druk dit uit, almal van hulle 181 00:10:41,000 --> 00:10:43,210 gaan dubbel stringe te vertoon. 182 00:10:43,210 --> 00:10:45,880 En as jy ook wil insluit die dubbele of enkele string 183 00:10:45,880 --> 00:10:50,070 in jou karakters, dan kan jy óf wissel jou snare. 184 00:10:50,070 --> 00:10:53,540 >> So Marvin se vir die tweede element, dit is 185 00:10:53,540 --> 00:10:56,380 gaan jou show-- net dubbel stringe 186 00:10:56,380 --> 00:10:59,050 en dan 'n enkele string so dit is afwisselend. 187 00:10:59,050 --> 00:11:04,040 Andersins, as jy wil 'n dubbele gebruik string operateur in 'n dubbele string 188 00:11:04,040 --> 00:11:07,090 wanneer jy dit is verklaar, dan jy net gebruik om die ontsnapping operateur. 189 00:11:07,090 --> 00:11:10,600 So jy doen agteroorskuisstreep dubbel string. 190 00:11:10,600 --> 00:11:13,330 >> En ten slotte, ons het ook het logiese vektore. 191 00:11:13,330 --> 00:11:15,890 So logical-- so WAAR en vals is, en hulle is 192 00:11:15,890 --> 00:11:18,880 gaan wees alles in hoofletters. 193 00:11:18,880 --> 00:11:22,370 En dan weer, ek concatenating hulle en dan die toeken van hulle te bools. 194 00:11:22,370 --> 00:11:24,590 So bools gaan om te wys jy WAAR, vals, en waar is. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> So hier is vectorized kruip. 197 00:11:31,620 --> 00:11:34,870 So in die begin, ek ek neem 'n function-- 198 00:11:34,870 --> 00:11:39,230 hierdie is 'n sequence-- genoem volgorde 2-12. 199 00:11:39,230 --> 00:11:42,490 En ek neem 'n reeks met 2. 200 00:11:42,490 --> 00:11:46,660 So dit gaan doen 2, 4, 6, 8, 10 en 12. 201 00:11:46,660 --> 00:11:50,080 En dan, ek is kruip die derde element te kry. 202 00:11:50,080 --> 00:11:55,770 >> So een ding om in gedagte te hou, is dat R indekse deur te begin vanaf 1. 203 00:11:55,770 --> 00:12:00,550 So Vals 3 gaan gee die derde element. 204 00:12:00,550 --> 00:12:04,580 Dit is 'n soort van verskillende van ander tale waar dit begin van nul. 205 00:12:04,580 --> 00:12:09,780 So in C of C ++, byvoorbeeld, is jy gaan die vierde element te kry. 206 00:12:09,780 --> 00:12:13,280 >> En hier is Vals 3-5. 207 00:12:13,280 --> 00:12:16,030 So een ding wat regtig cool is dat jy 208 00:12:16,030 --> 00:12:20,410 kan tydelike veranderlikes binne genereer en dan net gebruik om hulle op die vlieg. 209 00:12:20,410 --> 00:12:21,960 So hier is 3 tot 5. 210 00:12:21,960 --> 00:12:25,070 So ek skep van 'n vektor 3, 4, en 5 en dan 211 00:12:25,070 --> 00:12:29,700 Ek kruip die derde te kry, vierde en vyfde elemente. 212 00:12:29,700 --> 00:12:32,280 >> So so, kan jy abstrakte dit te doen net 213 00:12:32,280 --> 00:12:35,280 enige soort van 'n vektor wat gee jou kruip. 214 00:12:35,280 --> 00:12:40,050 So hier is Vals en dan die eerste, derde en sesde elemente. 215 00:12:40,050 --> 00:12:42,800 En dan, as jy wil hê 'n aanvulling te doen, 216 00:12:42,800 --> 00:12:45,210 sodat jy net nie die minus daarna en dit sal 217 00:12:45,210 --> 00:12:48,600 gee jou alles wat nie die eerste, derde, of sesde element. 218 00:12:48,600 --> 00:12:51,590 So dit sal wees 4, 8, en 10. 219 00:12:51,590 --> 00:12:54,380 >> En as jy wil te kry selfs meer gevorderde, 220 00:12:54,380 --> 00:12:57,610 jy kan koppel Boole vektore. 221 00:12:57,610 --> 00:13:05,210 So hierdie indeks gaan jy te gee hierdie Boole vektor van lengte 6. 222 00:13:05,210 --> 00:13:07,280 So rep WAAR komma 3. 223 00:13:07,280 --> 00:13:09,680 Dit sal waar drie keer herhaal. 224 00:13:09,680 --> 00:13:12,900 So dit sal jou 'n gee vektor WAAR, WAAR, WAAR. 225 00:13:12,900 --> 00:13:17,470 >> rep ONWAAR 4-- dit gaan om jou te gee 'n vektor van vals is, vals, vals is, vals. 226 00:13:17,470 --> 00:13:21,280 En dan is c gaan koppel daardie twee Booleans saam. 227 00:13:21,280 --> 00:13:24,090 So jy gaan drie te kry TRUEs en dan vier FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> Sodat wanneer jy indeks Vals, is jy gaan die ware, WAAR, WAAR kry. 229 00:13:28,460 --> 00:13:31,420 So wat gaan om te sê ja, Ek wil daardie drie elemente. 230 00:13:31,420 --> 00:13:33,520 En dan vals is, vals, Vals is, vals gaan 231 00:13:33,520 --> 00:13:37,140 om te sê nie, ek wil nie die elemente so dit is nie van plan om hulle om terug te keer. 232 00:13:37,140 --> 00:13:41,490 >> En ek dink daar is eintlik 'n tikfout hier want dit sê herhaling WAAR 3 233 00:13:41,490 --> 00:13:47,990 en herhaal ONWAAR 4, en tegnies, jy slegs ses elemente so herhaal ONWAAR, 234 00:13:47,990 --> 00:13:50,470 Herhaal ONWAAR 3 moet wees. 235 00:13:50,470 --> 00:13:55,260 Ek dink R is ook slim genoeg is om so dat as jy net spesifiseer 4 hier, dan 236 00:13:55,260 --> 00:13:56,630 dit sal nie eers fout uit. 237 00:13:56,630 --> 00:13:58,480 Dit sal net gee jou hierdie waarde. 238 00:13:58,480 --> 00:14:00,970 So dit sal net ignoreer daardie vierde ONWAAR is. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> So hier is vectorized opdrag. 241 00:14:09,270 --> 00:14:15,480 So set.seed-- dit stel net die saad vir pseudo random nommers. 242 00:14:15,480 --> 00:14:20,110 So ek die opstel van die saad te 42, wat beteken dat as ek genereer 243 00:14:20,110 --> 00:14:22,950 drie ewekansige normale waardes, en dan as jy 244 00:14:22,950 --> 00:14:27,400 hardloop set.seed op jou eie rekenaar met behulp van dieselfde waarde 42, 245 00:14:27,400 --> 00:14:30,990 dan kry jy ook die Dieselfde drie ewekansige normals. 246 00:14:30,990 --> 00:14:33,411 >> So, dit is regtig 'n goeie vir herhaalbaarheid. 247 00:14:33,411 --> 00:14:35,910 Gewoonlik, wanneer jy besig met 'n soort van wetenskaplike analise, 248 00:14:35,910 --> 00:14:37,230 jy wil die saad te stel. 249 00:14:37,230 --> 00:14:41,270 Op dié manier ander wetenskaplikes kan net presies dieselfde kode wat jy het reproduseer 250 00:14:41,270 --> 00:14:44,790 gedoen, want hulle sal die presiese het dieselfde ewekansige veranderlikes that-- of ewekansige 251 00:14:44,790 --> 00:14:47,270 waardes wat jy geneem het om uit sowel. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> En so het die vectorized opdrag hier is wat die Vals 1 tot 2. 254 00:14:53,910 --> 00:14:59,290 So dit neem om die eerste twee elemente Vals en dan wys hulle tot 0. 255 00:14:59,290 --> 00:15:03,940 En dan, jy kan ook net nie die soortgelyke ding met die Booleans. 256 00:15:03,940 --> 00:15:09,340 >> So Vals is nie gelyk sal dit aan 0-- gee jou 'n vektor vals is, vals, WAAR 257 00:15:09,340 --> 00:15:10,350 in hierdie geval. 258 00:15:10,350 --> 00:15:13,770 En dan, gaan dit 'n te sê van daardie indekse wat WAAR was, 259 00:15:13,770 --> 00:15:15,270 dan is dit gaan om dit te wys aan 5. 260 00:15:15,270 --> 00:15:18,790 So dit neem om die derde element hier en dan wys dit tot 5. 261 00:15:18,790 --> 00:15:22,300 >> En dit is baie mooi in vergelyking met 'n lae-vlak tale 262 00:15:22,300 --> 00:15:25,560 waar jy moet gebruik vir lusse al hierdie vectorized dinge te doen 263 00:15:25,560 --> 00:15:30,281 want dit is net baie intuïtief en dit is 'n enkele een-liner. 264 00:15:30,281 --> 00:15:32,030 En wat is 'n groot oor vectorized notasie 265 00:15:32,030 --> 00:15:37,020 is dat in R, dit is soort van ingeboude sodat hulle is amper so vinnig 266 00:15:37,020 --> 00:15:42,490 as doen in 'n lae-vlak taal as teenstelling met die maak van 'n lus vir in R 267 00:15:42,490 --> 00:15:46,317 en dan om dit te doen die dinamiese kruip self. 268 00:15:46,317 --> 00:15:48,900 En dit sal stadiger as om te wees hierdie soort van vectorized ding 269 00:15:48,900 --> 00:15:55,950 waar hy dit kan doen in parallel, waar dit is om dit te doen in threading basies. 270 00:15:55,950 --> 00:15:58,650 >> So hier is vectorized bedrywighede. 271 00:15:58,650 --> 00:16:04,920 So ek genereer 'n waarde 1 tot 3, toeken wat aan vek1, 3 tot 5, vek2, 272 00:16:04,920 --> 00:16:05,950 voeg hulle saam. 273 00:16:05,950 --> 00:16:11,490 Dit voeg hulle komponent-wyse so dit is 1 plus 3, 2 plus 4, en so aan. 274 00:16:11,490 --> 00:16:13,330 >> vek1 keer vek2. 275 00:16:13,330 --> 00:16:16,110 Dit vermeerder die twee waardes komponent wyse. 276 00:16:16,110 --> 00:16:21,830 So dit is 1 keer 3, 2 keer 4, en dan 3 keer 5. 277 00:16:21,830 --> 00:16:28,250 >> En dan, net soos jy kan ook doen comparisons-- logiese vergelykings. 278 00:16:28,250 --> 00:16:33,640 So dit is onwaar onwaar WAAR in hierdie geval, want 1 is nie groter as 3, 279 00:16:33,640 --> 00:16:35,920 2 is nie groter as 4. 280 00:16:35,920 --> 00:16:41,160 Dit is, dink ek, 'n ander tikfout, 3 is beslis nie meer as 5. 281 00:16:41,160 --> 00:16:41,660 Ja. 282 00:16:41,660 --> 00:16:45,770 En so kan jy net doen alles hierdie eenvoudige operasies 283 00:16:45,770 --> 00:16:48,350 omdat hul geërf uit die klasse hulself. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> So dit was net die vektor. 286 00:16:52,580 --> 00:16:56,530 En dit is soort van die mees fundamentele R voorwerp omdat gegee 'n vektor, 287 00:16:56,530 --> 00:16:59,170 jy kan bou van meer gevorderde voorwerpe. 288 00:16:59,170 --> 00:17:00,560 >> So hier is 'n matriks. 289 00:17:00,560 --> 00:17:05,030 Dit is in wese die onttrekking van wat 'n matriks is self. 290 00:17:05,030 --> 00:17:10,099 So in hierdie geval, dit is drie verskillende vektore, waar elkeen 'n kolom, 291 00:17:10,099 --> 00:17:12,710 of jy kan dit oorweeg as elkeen 'n ry. 292 00:17:12,710 --> 00:17:18,250 >> So ek stoor 'n matriks van 1 tot 9 en dan is ek spesifiseer 3 rye. 293 00:17:18,250 --> 00:17:23,364 So 1 tot 9 sal gee jou 'n vektor 1, 2, 3, 4, 5, 6, en al die pad tot 9. 294 00:17:23,364 --> 00:17:29,250 >> Een ding om ook in gedagte hou, is dat R winkels waardes in kolom-groot-formaat. 295 00:17:29,250 --> 00:17:34,160 So met ander woorde, wanneer jy sien 1 tot 9, gaan dit te stoor them-- 296 00:17:34,160 --> 00:17:36,370 dit gaan wees 1, 2, 3 in die eerste kolom, 297 00:17:36,370 --> 00:17:38,510 en dan sal dit doen 4, 5, 6 in die tweede kolom, 298 00:17:38,510 --> 00:17:41,440 en dan 7, 8, 9 in die derde kolom. 299 00:17:41,440 --> 00:17:45,570 >> En hier is 'n paar ander algemene funksies wat jy kan gebruik. 300 00:17:45,570 --> 00:17:49,650 So dowwe mat, dit sal jou gee die dimensies van die matriks. 301 00:17:49,650 --> 00:17:52,620 Dit gaan om terug te keer 'n vektor van die dimensie. 302 00:17:52,620 --> 00:17:55,580 So in hierdie geval, omdat ons matriks is 3 by 3, 303 00:17:55,580 --> 00:18:01,900 dit gaan vir jou 'n numeriese vektor wat is 3 3. 304 00:18:01,900 --> 00:18:05,270 >> En hier is net wat matriksvermenigvuldiging. 305 00:18:05,270 --> 00:18:11,970 So gewoonlik, as jy net doen asterisk-- so mat asterisk mat-- 306 00:18:11,970 --> 00:18:15,380 dit gaan wees komponent-wyse werking 307 00:18:15,380 --> 00:18:17,300 of wat genoem word die Hadamard produk. 308 00:18:17,300 --> 00:18:21,310 So dit gaan elke te doen element komponent-wyse. 309 00:18:21,310 --> 00:18:23,610 Maar, as jy wil hê matriks multiplication-- 310 00:18:23,610 --> 00:18:29,380 so vermenigvuldig die eerste ry tye die tweede matriks se eerste kolom 311 00:18:29,380 --> 00:18:34,510 en so on-- jy sal gebruik hierdie persent operasie. 312 00:18:34,510 --> 00:18:38,110 >> En t van mat is net 'n operasie vir getransponeerde. 313 00:18:38,110 --> 00:18:42,590 So ek sê neem die getransponeerde in die matriks, vermenigvuldig dit met die matriks 314 00:18:42,590 --> 00:18:43,090 self. 315 00:18:43,090 --> 00:18:45,006 En dan gaan dit terug te keer na jou 'n ander 3 316 00:18:45,006 --> 00:18:50,700 deur 3 matriks vertoning die produk wat jy wil hê. 317 00:18:50,700 --> 00:18:53,750 >> En so dit was matriks. 318 00:18:53,750 --> 00:18:56,020 Hier is wat genoem word 'n data raam. 319 00:18:56,020 --> 00:19:00,780 A data raam wat jy kan dink as 'n matriks, maar elke kolom self 320 00:19:00,780 --> 00:19:02,990 gaan wees van 'n ander soort. 321 00:19:02,990 --> 00:19:07,320 >> So, wat is regtig cool oor data rame is dat in data-ontleding self, 322 00:19:07,320 --> 00:19:11,260 jy gaan al hierdie te hê heterogene data en al hierdie werklik 323 00:19:11,260 --> 00:19:15,640 morsig dinge waar elk van die kolomme hulself kan word van verskillende tipes. 324 00:19:15,640 --> 00:19:21,460 So hier ek sê 'n data raam, doen SY 1-3, 325 00:19:21,460 --> 00:19:24,750 en dan ook 'n karakter vektor. 326 00:19:24,750 --> 00:19:28,470 So kan ek indeks deur elk van hierdie kolomme 327 00:19:28,470 --> 00:19:30,930 en dan sal ek die waardes self. 328 00:19:30,930 --> 00:19:34,370 En jy kan ook doen 'n soort van bedrywighede op data rame. 329 00:19:34,370 --> 00:19:38,040 En die meeste van die tyd wanneer jy data-analise of 'n soort doen 330 00:19:38,040 --> 00:19:42,042 van preprocessing, sal jy werk met hierdie data strukture 331 00:19:42,042 --> 00:19:44,250 waar elke kolom gaan te wees van 'n ander soort. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Ten slotte, so dit is in wese net die vier noodsaaklike voorwerpe in R. Lys 334 00:19:52,970 --> 00:19:55,820 sal net versamel enige ander voorwerpe wat jy wil. 335 00:19:55,820 --> 00:20:00,130 So sal dit in die winkel in een veranderlike wat jy maklik kan bekom. 336 00:20:00,130 --> 00:20:02,370 >> So hier, ek neem 'n lys. 337 00:20:02,370 --> 00:20:04,460 Ek sê dinge gelyk aan 3. 338 00:20:04,460 --> 00:20:08,060 So ek gaan een element te hê in die lys, en dit is goed genoem, 339 00:20:08,060 --> 00:20:10,570 en dit gaan om die waarde 3 te hê. 340 00:20:10,570 --> 00:20:13,140 >> Ek kan ook 'n matriks. 341 00:20:13,140 --> 00:20:17,970 So, dit is 1 tot 4 en die einde ry gelyk 2, so 'n 2 by 2 matriks. 342 00:20:17,970 --> 00:20:20,270 Ook in die lys en dit genoem mat. 343 00:20:20,270 --> 00:20:24,690 moreStuff, 'n karakter string, en selfs 'n ander lys op sigself. 344 00:20:24,690 --> 00:20:27,710 >> So, dit is 'n lys wat is 5 en beer. 345 00:20:27,710 --> 00:20:30,990 So het dit die waarde 5 en dit het die karakter string beer 346 00:20:30,990 --> 00:20:32,710 en dit is 'n lys in 'n lys. 347 00:20:32,710 --> 00:20:35,965 So kan jy hierdie dinge het rekursiewe dinge waar 348 00:20:35,965 --> 00:20:38,230 jy het another-- n tik in die tipe. 349 00:20:38,230 --> 00:20:41,420 So so, kan jy 'n matriks het binne 'n ander matriks en so aan. 350 00:20:41,420 --> 00:20:44,264 En 'n lys is net 'n goeie manier van die insameling en saamgevoeg 351 00:20:44,264 --> 00:20:45,430 al hierdie verskillende voorwerpe. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> En ten slotte, hier is net help in die geval Dit was net weg baie vinnig verby. 354 00:20:57,150 --> 00:21:01,350 So wanneer jy verward oor 'n soort van funksie, 355 00:21:01,350 --> 00:21:03,510 jy kan hulp van daardie funksie te doen. 356 00:21:03,510 --> 00:21:07,120 Sodat jy kan help matriks of 'n vraagteken matriks. 357 00:21:07,120 --> 00:21:11,430 En hulp en die vraagteken is net snelskrif vir die dieselfde ding 358 00:21:11,430 --> 00:21:13,040 sodat hulle is aliasse. 359 00:21:13,040 --> 00:21:16,820 >> lm is 'n funksie wat net nie 'n lineêre model. 360 00:21:16,820 --> 00:21:20,340 Maar as jy net het geen idee hoe om dit werk, kan jy net hulp van lm doen 361 00:21:20,340 --> 00:21:24,610 en wat gee jou 'n paar soort van dokumentasie wat 362 00:21:24,610 --> 00:21:27,960 lyk amper soos 'n man bladsy in Unix, waar 363 00:21:27,960 --> 00:21:34,210 jy het 'n kort beskrywing van wat dit doen nie, ook wat sy argumente is, 364 00:21:34,210 --> 00:21:38,850 wat dit terug, en net wenke oor hoe om dit te gebruik, en 'n paar voorbeelde sowel. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> So laat my voor en show gaan sommige demo van die gebruik van R. OK. 367 00:21:52,890 --> 00:21:55,470 So het ek oor baie vinnig net die data 368 00:21:55,470 --> 00:21:59,440 strukture en 'n soort van die op-- sommige van die bedrywighede. 369 00:21:59,440 --> 00:22:02,960 Hier is 'n paar funksies. 370 00:22:02,960 --> 00:22:06,750 >> So hier is ek net gaan 'n funksie te definieer. 371 00:22:06,750 --> 00:22:09,970 So ek ook met behulp van opdrag operateur hier, 372 00:22:09,970 --> 00:22:12,610 en dan ek sê verklaar dat dit as 'n funksie. 373 00:22:12,610 --> 00:22:14,140 En dit neem om die waarde x. 374 00:22:14,140 --> 00:22:18,210 So, dit is 'n waarde wat jy wil hê en ek gaan om terug te keer x self. 375 00:22:18,210 --> 00:22:20,840 So, dit is die identiteit funksie. 376 00:22:20,840 --> 00:22:23,670 >> En wat is koel oor hierdie in vergelyking met ander tale 377 00:22:23,670 --> 00:22:26,330 en 'n ander 'n lae-vlak tale is dat x 378 00:22:26,330 --> 00:22:29,350 kan wees van enige tipe self en dit sal die tipe terugkeer. 379 00:22:29,350 --> 00:22:35,251 Sodat jy kan imagine-- so laat my net loop hierdie vinnig. 380 00:22:35,251 --> 00:22:35,750 Jammer. 381 00:22:35,750 --> 00:22:40,300 >> So een ding wat ek moet ook melding is dat hierdie editor Ek gebruik 382 00:22:40,300 --> 00:22:41,380 genoem rstudio. 383 00:22:41,380 --> 00:22:44,389 Dit is wat genoem word 'n IDE. 384 00:22:44,389 --> 00:22:46,180 En een ding wat baie mooi oor hierdie 385 00:22:46,180 --> 00:22:51,500 is dat dit sluit 'n groot deel van die dinge wat jy wil doen in R self 386 00:22:51,500 --> 00:22:53,180 net baie intuïtief. 387 00:22:53,180 --> 00:22:55,550 >> So hier is 'n tolk console. 388 00:22:55,550 --> 00:23:02,160 So so, kan jy ook hierdie konsole rou net deur 'n kapitaal R. 389 00:23:02,160 --> 00:23:05,630 En dit is presies die dieselfde ding as die konsole. 390 00:23:05,630 --> 00:23:12,210 So ek kan net doen id funksie x, x, x. 391 00:23:12,210 --> 00:23:16,130 En then-- en dan sal goed self. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> So rstudio is groot want dit het die konsole. 394 00:23:21,740 --> 00:23:25,360 Dit het ook die dokumente jy wil om te loop op. 395 00:23:25,360 --> 00:23:28,629 En dan is dit het 'n paar veranderlikes dat jy kan sien in 'n omgewing. 396 00:23:28,629 --> 00:23:30,420 En dan, as jy ' erwe te doen, dan is jy 397 00:23:30,420 --> 00:23:33,730 kan net sien dit hier, in teenstelling met die bestuur van al hierdie verskillende vensters 398 00:23:33,730 --> 00:23:35,940 deur hulself. 399 00:23:35,940 --> 00:23:40,530 >> Ek het eintlik persoonlik gebruik Vim, maar ek voel soos rstudio is uitstekend net 400 00:23:40,530 --> 00:23:44,640 vir die kry 'n goeie idee hoe R. Gewoonlik gebruik, 401 00:23:44,640 --> 00:23:47,040 wanneer jy probeer om te leer 'n paar nuwe taak, 402 00:23:47,040 --> 00:23:49,590 jy wil nie om te hanteer te veel dinge op een slag. 403 00:23:49,590 --> 00:23:53,120 So R is net 'n very-- rstudio is 'n baie goeie manier van leer R 404 00:23:53,120 --> 00:23:56,760 sonder om te gaan met al hierdie ander dinge. 405 00:23:56,760 --> 00:23:58,600 >> So hier Ek hardloop id hallo. 406 00:23:58,600 --> 00:24:00,090 Dit keer terug hallo. 407 00:24:00,090 --> 00:24:01,740 id 123. 408 00:24:01,740 --> 00:24:04,610 Hier is 'n vektor van heelgetalle. 409 00:24:04,610 --> 00:24:08,620 So op soortgelyke wyse, want jy kan neem 'n ander soort van waarde, 410 00:24:08,620 --> 00:24:16,060 wat jy kan doen terugkeer id van x sodat dit terugkeer 1234 en 5. 411 00:24:16,060 --> 00:24:22,210 >> En laat my net wys dat dit is inderdaad 'n heelgetal. 412 00:24:22,210 --> 00:24:28,800 En so, as jy doen die klas id x, dit gaan heelgetal wees. 413 00:24:28,800 --> 00:24:34,170 En dan, kan jy ook vergelyk die twee en dit is waar. 414 00:24:34,170 --> 00:24:38,350 So ek gekyk word of id van x gelyk gelykes x en kennis 415 00:24:38,350 --> 00:24:39,760 dat dit gee jou twee TRUEs. 416 00:24:39,760 --> 00:24:44,280 So is dit nie te sê is die twee voorwerpe identies, 417 00:24:44,280 --> 00:24:46,845 maar elkeen van die inskrywings binne die vektore identies. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Hier is bounded.compare. 420 00:24:52,090 --> 00:24:58,470 So, dit is 'n bietjie meer ingewikkeld in dat dit 'n as toestand en anders 421 00:24:58,470 --> 00:25:00,960 en dan neem dit twee argumente op 'n tyd. 422 00:25:00,960 --> 00:25:02,640 So x is van enige soort. 423 00:25:02,640 --> 00:25:06,280 En ek sê dit tweede argument is 'n. 424 00:25:06,280 --> 00:25:08,380 Dit kan enigiets wees as well. 425 00:25:08,380 --> 00:25:12,490 Maar by verstek, dit gaan te neem 5 as jy nie spesifiseer niks. 426 00:25:12,490 --> 00:25:16,730 >> So hier gaan ek om te sê As x is groter as 'n. 427 00:25:16,730 --> 00:25:19,220 So as ek spesifiseer nie 'n, dit sê as x is groter as 5, 428 00:25:19,220 --> 00:25:20,470 dan gaan ek om terug te keer WAAR. 429 00:25:20,470 --> 00:25:23,230 anders, ek gaan om terug te keer ONWAAR is. 430 00:25:23,230 --> 00:25:24,870 So laat my gaan voort en definieer hierdie. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> En nou gaan ek hardloop bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 So dit sê is 3 minder than-- is 3 meer as 5. 434 00:25:39,150 --> 00:25:41,830 Nee, dit is nie so ONWAAR is. 435 00:25:41,830 --> 00:25:46,550 >> En bounded.compare 3 en ek gaan om dit te vergelyk met 'n gelykes 2. 436 00:25:46,550 --> 00:25:50,700 So nou is ek sê ja, nou ek wil 'n iets anders te wees. 437 00:25:50,700 --> 00:25:52,750 So ek gaan 'n om te sê, moet jy 2. 438 00:25:52,750 --> 00:25:56,640 >> Ek kan óf doen hierdie soort van notasie of ek sê 'n gelykes 2. 439 00:25:56,640 --> 00:25:58,720 Dit is 'n meer leesbare in dat wanneer jy 440 00:25:58,720 --> 00:26:01,450 kyk na hierdie werklik ingewikkelde funksies wat 441 00:26:01,450 --> 00:26:08,110 neem verskeie arguments-- en hierdie kan dosyne oftentimes-- net sê 442 00:26:08,110 --> 00:26:11,140 'n gelykes 2 is meer leesbaar is vir jou sodat later in die toekoms 443 00:26:11,140 --> 00:26:13,020 sal jy weet wat jy doen. 444 00:26:13,020 --> 00:26:17,120 >> So in hierdie geval, ek is woord is 3 meer as 2. 445 00:26:17,120 --> 00:26:18,270 Ja, dit is. 446 00:26:18,270 --> 00:26:22,350 En so, kan ek net verwyder en sê, is 3 meer as 2 447 00:26:22,350 --> 00:26:23,440 waar 'n gelykes 2. 448 00:26:23,440 --> 00:26:26,230 En dit is ook waar. 449 00:26:26,230 --> 00:26:26,730 Ja? 450 00:26:26,730 --> 00:26:29,670 >> GEHOOR: Is jy uitvoering reël vir reël? 451 00:26:29,670 --> 00:26:30,670 >> Dustin TRAN: Ja, ek is. 452 00:26:30,670 --> 00:26:33,900 So wat ek hier doen, is neem hierdie teks document-- 453 00:26:33,900 --> 00:26:39,825 en wat is groot oor rstudio is dat Ek kan net hardloop 'n short-- n sleutel kombenasie. 454 00:26:39,825 --> 00:26:41,820 So ek doen Control-Enter. 455 00:26:41,820 --> 00:26:44,850 >> En dan, ek neem die lyn in die teks dokument 456 00:26:44,850 --> 00:26:46,710 en dan om in die konsole. 457 00:26:46,710 --> 00:26:50,800 So hier ek sê, bounded.compare en ek doen Control-X. 458 00:26:50,800 --> 00:26:52,540 So ek kan net loop hier. 459 00:26:52,540 --> 00:26:54,920 En dan is dit sal neem om die lyn en dan sit dit hier. 460 00:26:54,920 --> 00:26:57,900 En dan op soortgelyke wyse, kan ek nie loop hier. 461 00:26:57,900 --> 00:27:04,630 En dan sal dit hou net die definisie die lyne in die konsole soos dit. 462 00:27:04,630 --> 00:27:10,690 >> En as jy ook kennis van die krullerige draadjies is daar net soos in C sintaksis. 463 00:27:10,690 --> 00:27:13,910 x-- indien die indien toestand is ook gaan hakies te gebruik en dan 464 00:27:13,910 --> 00:27:15,350 jy kan gebruik anders. 465 00:27:15,350 --> 00:27:17,496 Nog een is anders as. 466 00:27:17,496 --> 00:27:21,440 So dit gaan wees x gelyk is gelyk aan ', byvoorbeeld. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 En dan gaan ek terug iets hier. 469 00:27:26,350 --> 00:27:29,490 >> Let daarop dat daar twee verskillende dinge hier wat gaan aan. 470 00:27:29,490 --> 00:27:34,360 Een daarvan is dat hier ek spesifiseer terugkeer om die waarde WAAR. 471 00:27:34,360 --> 00:27:35,950 Hier is ek net sê x. 472 00:27:35,950 --> 00:27:39,970 So R sal gewoonlik deur verstek neem die laaste arguments-- 473 00:27:39,970 --> 00:27:43,510 of neem die laaste reël van die kode, en wat sal wees wat dit teruggekeer. 474 00:27:43,510 --> 00:27:46,920 So hier is dit dieselfde iets soos dit te doen terugkeer x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> En net om jou te wys. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 En dan, sal dit werk net so. 479 00:27:57,052 --> 00:27:58,260 So laat my gaan voort met hierdie. 480 00:27:58,260 --> 00:28:00,630 >> So anders as. 481 00:28:00,630 --> 00:28:04,060 En regtig, ek kan terugkeer iets wat ek wil. 482 00:28:04,060 --> 00:28:06,680 So ek het nie eens te terugkeer Booleans al die tyd, 483 00:28:06,680 --> 00:28:08,410 Ek kan net terug iets anders. 484 00:28:08,410 --> 00:28:10,670 So ek kan terugkeer beer doen. 485 00:28:10,670 --> 00:28:12,989 >> So as x gelyk is gelyk aan ', dit gaan beer om terug te keer. 486 00:28:12,989 --> 00:28:14,530 Andersins, dit gaan om terug te keer WAAR. 487 00:28:14,530 --> 00:28:19,310 Ek kan ook nie 'n vektor of regtig iets. 488 00:28:19,310 --> 00:28:22,210 >> En gewoonlik in staties getikte tale, 489 00:28:22,210 --> 00:28:23,840 jy het 'n soort hier spesifiseer. 490 00:28:23,840 --> 00:28:25,750 En agterkom dat dit net kan wees nie. 491 00:28:25,750 --> 00:28:32,400 En R is intelligent genoeg dat dit sal net doen nie en dit sal werk boete. 492 00:28:32,400 --> 00:28:33,620 >> So laat my definieer hierdie. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh sorry. 495 00:28:41,230 --> 00:28:44,336 Dit moet 'n krullerige brace hier te wees. 496 00:28:44,336 --> 00:28:44,836 OK. 497 00:28:44,836 --> 00:28:45,336 Cool. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Alle regte. 500 00:28:54,530 --> 00:28:58,250 So laat ons nou vergelyk 3 en 'n gelykes 3. 501 00:28:58,250 --> 00:29:01,860 So dit moet return-- yeah-- die waarde beer. 502 00:29:01,860 --> 00:29:06,740 >> So nou 'n meer algemene ding is soos Wat van ander data strukture. 503 00:29:06,740 --> 00:29:09,110 So jy het hierdie funksie. 504 00:29:09,110 --> 00:29:15,360 Dit gaan om te werk op enige soort van waarde soos 3 of enige numeriese, 505 00:29:15,360 --> 00:29:17,500 Met ander woorde, dubbel. 506 00:29:17,500 --> 00:29:19,330 >> Maar wat van iets soos 'n vektor. 507 00:29:19,330 --> 00:29:27,750 So wat gebeur as jy so do-- Ek is gaan val aan, sê, 4 toe te ken aan 6. 508 00:29:27,750 --> 00:29:31,640 So as ek terug kom nie, so is 'n vektor van 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Nou laat ons kyk wat gebeur as ek dit doen bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 So dit gaan om jou te gee 15 1251. 512 00:29:42,450 --> 00:29:46,440 So met ander woorde, dit sê As jy kyk na hierdie toestand 513 00:29:46,440 --> 00:29:50,040 so dit sê x is minder as 'n of iets. 514 00:29:50,040 --> 00:29:51,880 So, dit is 'n bietjie verwarrend want nou 515 00:29:51,880 --> 00:29:53,379 jy weet net nie wat gaan aan. 516 00:29:53,379 --> 00:29:58,690 So ek dink een ding wat werklik goed oor net probeer om te ontfout 517 00:29:58,690 --> 00:30:04,600 is dat jy net kan doen Val is groter as 'n en kyk wat daar gebeur. 518 00:30:04,600 --> 00:30:09,720 >> So val-- n is by verstek 5 so Laat ons net Val meer as 5. 519 00:30:09,720 --> 00:30:14,280 So, dit is 'n vektor ONWAAR ONWAAR WAAR. 520 00:30:14,280 --> 00:30:17,206 So nou wanneer jy op soek na hierdie, dit gaan om te sê as, 521 00:30:17,206 --> 00:30:20,080 en dan gaan dit te gee jy hierdie is 'n vektor van false false WAAR. 522 00:30:20,080 --> 00:30:23,450 >> So wanneer jy dit in R, R het geen idee wat jy doen. 523 00:30:23,450 --> 00:30:26,650 Omdat dit verwag 'n enkele waarde, wat is 'n Boole, en nou 524 00:30:26,650 --> 00:30:29,420 jy gee dit 'n vektor van Booleans. 525 00:30:29,420 --> 00:30:31,970 So by verstek, R is net gaan om te sê wat die heck, 526 00:30:31,970 --> 00:30:35,440 Ek gaan om te aanvaar dat jy gaan die eerste element hier neem. 527 00:30:35,440 --> 00:30:38,320 So ek gaan say-- ek gaan om aan te neem dat dit ONWAAR is. 528 00:30:38,320 --> 00:30:40,890 So dit gaan om te sê Nee, dit is nie reg nie. 529 00:30:40,890 --> 00:30:45,246 >> Net so, dit gaan wees Val gelyk gelyk aan 'n. 530 00:30:45,246 --> 00:30:47,244 Nee, jammer 5. 531 00:30:47,244 --> 00:30:48,910 En dit gaan ook om vals te wees as goed. 532 00:30:48,910 --> 00:30:52,410 So dit gaan nie om te sê, dit is nie waar nie so goed so dit is 533 00:30:52,410 --> 00:30:53,680 gaan hierdie laaste een om terug te keer. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> So, dit is óf 'n goeie ding of n slegte ding, afhangende van hoe jy dit sien. 536 00:31:01,360 --> 00:31:05,104 Want as jy die skep van hierdie funksies, 537 00:31:05,104 --> 00:31:06,770 jy nie eintlik weet wat gaan aan. 538 00:31:06,770 --> 00:31:10,210 So soms jy wil 'n fout wil, of miskien het jy wil net 'n waarskuwing. 539 00:31:10,210 --> 00:31:12,160 In hierdie geval, R dit nie doen nie. 540 00:31:12,160 --> 00:31:14,300 So dit is regtig tot jy die basis van wat 541 00:31:14,300 --> 00:31:17,310 jy dink die taal moet doen in hierdie geval 542 00:31:17,310 --> 00:31:22,920 As jy in 'n vektor van Booleans slaag wanneer jy doen 'n indien toestand. 543 00:31:22,920 --> 00:31:31,733 >> So kom ons sê dat jy het die oorspronklike een met as anders terugkeer waar en jy 544 00:31:31,733 --> 00:31:34,190 gaan om terug te keer ONWAAR is. 545 00:31:34,190 --> 00:31:39,300 So een manier ekserpering dit is om te sê ek 546 00:31:39,300 --> 00:31:41,530 nie eens hierdie voorwaardelike ding nodig. 547 00:31:41,530 --> 00:31:47,220 Nog 'n ding wat ek kan doen, is net die terugkeer van die waardes self. 548 00:31:47,220 --> 00:31:53,240 So as jy sien, as jy doen Val is groter as 5, 549 00:31:53,240 --> 00:31:56,350 dit gaan 'n terugkeer vektor ONWAAR ONWAAR WAAR. 550 00:31:56,350 --> 00:31:58,850 >> Miskien is dit wat jy wil vir bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Jy wil 'n vektor van Booleans om terug te keer waar dit vergelyk elk van die waardes 552 00:32:02,940 --> 00:32:04,190 vir hulself. 553 00:32:04,190 --> 00:32:11,165 So kan jy net nie bounded.compare funksie x, 'n gelykes 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 En dan in plaas van om hierdie as anders toestand, 556 00:32:15,363 --> 00:32:21,430 Ek gaan net om terug te keer x is groter as 5. 557 00:32:21,430 --> 00:32:23,620 So as dit waar is, dan dit gaan om terug te keer WAAR. 558 00:32:23,620 --> 00:32:26,830 En dan as dit nie, dit is gaan om terug te keer ONWAAR is. 559 00:32:26,830 --> 00:32:30,880 >> En dit sal werk vir enige van hierdie strukture. 560 00:32:30,880 --> 00:32:41,450 So ek kan bounded.compare c 1 6 of 9 en dan gaan ek om te sê 'n gelykes 6, 561 00:32:41,450 --> 00:32:42,799 byvoorbeeld. 562 00:32:42,799 --> 00:32:44,840 En dan gaan dit gee jou die reg Boole 563 00:32:44,840 --> 00:32:48,240 vektor wat jy ontwerp. 564 00:32:48,240 --> 00:32:50,660 >> So dit is net funksies En nou, laat my net 565 00:32:50,660 --> 00:32:54,980 wys jou 'n paar interaktiewe beeldmateriaal. 566 00:32:54,980 --> 00:32:59,700 Ek dink nie ek het eintlik ' Wi-Fi hier so laat my net voort te gaan 567 00:32:59,700 --> 00:33:01,970 en slaan hierdie een wat ek dink. 568 00:33:01,970 --> 00:33:05,260 >> Maar een ding wat is cool is egter dat as jy net 569 00:33:05,260 --> 00:33:09,600 wil 'n klomp van die toets verskillende data opdragte, 570 00:33:09,600 --> 00:33:13,320 daar is 'n klomp van die verskillende datastelle wat reeds preloaded in R. 571 00:33:13,320 --> 00:33:15,770 So een van hulle is genoem die iris dataset. 572 00:33:15,770 --> 00:33:18,910 Dit is een van die mees bekende kinders in die masjien leer. 573 00:33:18,910 --> 00:33:23,350 Jy sal gewoonlik net doen 'n soort van toets gevalle te sien of jou kode loop. 574 00:33:23,350 --> 00:33:27,520 So laat ons net kyk wat iris is. 575 00:33:27,520 --> 00:33:33,130 >> So hierdie ding gaan 'n data raam te wees. 576 00:33:33,130 --> 00:33:36,000 En dit is soort van 'n lang, omdat Ek het net gedruk iris. 577 00:33:36,000 --> 00:33:38,810 Dit is die druk van die hele ding. 578 00:33:38,810 --> 00:33:42,830 So dit het al hierdie verskillende name. 579 00:33:42,830 --> 00:33:45,505 So iris is 'n versameling van verskillende blomme. 580 00:33:45,505 --> 00:33:48,830 In hierdie geval, is dit vertel jy die spesies van dit, 581 00:33:48,830 --> 00:33:54,760 al hierdie verskillende breedtes en lengtes van die kelkblaarkrans en die blom. 582 00:33:54,760 --> 00:33:58,880 >> En so normaal as jy wil iris te druk, 583 00:33:58,880 --> 00:34:03,680 byvoorbeeld, jy nie wil hê om dit te hê al hierdie dinge doen, want dit kan oorneem 584 00:34:03,680 --> 00:34:05,190 jou hele console. 585 00:34:05,190 --> 00:34:09,280 So een ding wat werklik mooi is die hoof funksie. 586 00:34:09,280 --> 00:34:12,929 So as jy net doen hoof iris, dit sal jou gee 587 00:34:12,929 --> 00:34:17,389 die eerste vyf rye, of ses wat ek dink. 588 00:34:17,389 --> 00:34:19,909 En jy dan goed, kan net hier spesifiseer. 589 00:34:19,909 --> 00:34:22,914 So 20-- sal dit gee jy die eerste 20 rye. 590 00:34:22,914 --> 00:34:24,830 En ek was eintlik soort verbaas dat dit 591 00:34:24,830 --> 00:34:28,770 my gegee het ses so laat my gaan voort en kyk iris-- of kop, jammer. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 En hier is dit sal gee u die dokumentasie 594 00:34:34,960 --> 00:34:37,960 van wat die waarde kop nie. 595 00:34:37,960 --> 00:34:40,839 So dit gee die eerste of die laaste van 'n voorwerp. 596 00:34:40,839 --> 00:34:42,630 En dan gaan ek kyk na die standaard. 597 00:34:42,630 --> 00:34:47,340 En dan sê dit dat die verstek metode kop x en N gelyk 6L. 598 00:34:47,340 --> 00:34:50,620 So hierdie gee die eerste ses elemente. 599 00:34:50,620 --> 00:34:55,050 En insgelyks as jy hier sien, het ek het nie n te spesifiseer gelyk 6. 600 00:34:55,050 --> 00:34:56,840 By verstek dit gebruik ses, dink ek. 601 00:34:56,840 --> 00:35:00,130 En dan, as ek wil 'n sekere spesifiseer waarde, dan kan ek sien wat as goed. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> So dit is 'n paar eenvoudige opdragte en hier is 'n ander een wat just-- goed, 604 00:35:10,592 --> 00:35:12,550 Ek can-- dit is eintlik 'n bietjie meer kompleks, 605 00:35:12,550 --> 00:35:17,130 maar dit sal net die klas van elke kolom van die iris dataset. 606 00:35:17,130 --> 00:35:20,910 So dit sal jou wys wat elk van hierdie kolomme is in terme van hul tipes. 607 00:35:20,910 --> 00:35:23,665 So kelkblaarkrans lengte is numeriese, kelkblaarkrans breedte numeriese. 608 00:35:23,665 --> 00:35:26,540 Al hierdie waardes is net numeriese want jy kan vertel van hierdie data 609 00:35:26,540 --> 00:35:29,440 struktureer dit is al gaan numeriese. 610 00:35:29,440 --> 00:35:34,310 >> En die Soort kolom gaan 'n faktor wees. 611 00:35:34,310 --> 00:35:37,270 So normaalweg, sou jy dink dat dit is soos 'n karakter string. 612 00:35:37,270 --> 00:35:48,830 Maar as jy net doen irisSpecies, en dan gaan ek kop 5 te doen, 613 00:35:48,830 --> 00:35:51,820 en dit gaan druk uit die eerste vyf waardes. 614 00:35:51,820 --> 00:35:54,150 >> En dan agterkom vlakke. 615 00:35:54,150 --> 00:35:58,870 So dit is saying-- dit is R se manier van 'n kategoriese veranderlikes. 616 00:35:58,870 --> 00:36:03,765 So in plaas van net met karakterstringe, 617 00:36:03,765 --> 00:36:06,740 dit het vlakke spesifiseer wat van hierdie dinge is. 618 00:36:06,740 --> 00:36:12,450 >> So kom ons sê irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 So wat jy hier wil doen, is ek subsetting hierdie Soort kolom. 620 00:36:17,690 --> 00:36:21,480 So dit neem die Soort kolom en dan 621 00:36:21,480 --> 00:36:23,820 dit indekse die eerste element te kry. 622 00:36:23,820 --> 00:36:27,140 So dit moet gee jou setosa. 623 00:36:27,140 --> 00:36:28,710 En dit gee jou ook vlakke hier. 624 00:36:28,710 --> 00:36:32,812 >> So kan jy ook vergelyk om dit te die karakter setosa 625 00:36:32,812 --> 00:36:34,645 en dit is nie van plan om waar te wees, want die een 626 00:36:34,645 --> 00:36:37,940 is van 'n ander soort as die ander. 627 00:36:37,940 --> 00:36:40,590 Of ek dink dit is waar, want R is meer intelligent as dit. 628 00:36:40,590 --> 00:36:45,420 En dit lyk op hierdie en dan sê, miskien is dit wat jy wil. 629 00:36:45,420 --> 00:36:51,860 So dit gaan om die karakter te sê string setosa is dieselfde as hierdie een. 630 00:36:51,860 --> 00:37:01,290 En dan so, kan jy ook net gryp hierdie soos so aan. 631 00:37:01,290 --> 00:37:05,580 >> So dit is net 'n soort van vinnige bevele van die dataset. 632 00:37:05,580 --> 00:37:08,030 So hier is 'n paar data eksplorasie. 633 00:37:08,030 --> 00:37:11,360 So, dit is 'n bietjie meer betrokke by die data-analise. 634 00:37:11,360 --> 00:37:18,340 En dit is geneem uit 'n paar Boot Camp in R in Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> So biblioteek buitelandse. 636 00:37:20,790 --> 00:37:24,880 So ek gaan om te laai in 'n biblioteek wat genoem buitelandse. 637 00:37:24,880 --> 00:37:32,460 So dit gaan my te gee read.dta so aanvaar dat ek hierdie dataset. 638 00:37:32,460 --> 00:37:39,000 Dit word in die huidige gestoor werk gids van my console. 639 00:37:39,000 --> 00:37:42,190 So laat ons net sien wat die werk gids is. 640 00:37:42,190 --> 00:37:44,620 >> So hier is my gids te werk. 641 00:37:44,620 --> 00:37:50,040 En lees dot data, hierdie ding, sê hierdie lêer 642 00:37:50,040 --> 00:37:54,650 is geleë in die data gids van hierdie huidige werk gids. 643 00:37:54,650 --> 00:38:00,520 En read.dta dit is nie 'n verstek opdrag. 644 00:38:00,520 --> 00:38:02,760 Ek dink ek laai dit in reeds. 645 00:38:02,760 --> 00:38:04,750 IEI aanvaar ek gelaai dit in reeds. 646 00:38:04,750 --> 00:38:08,115 >> Maar so read.dta gaan nie 'n verstek opdrag te wees. 647 00:38:08,115 --> 00:38:11,550 En dit is hoekom jy gaan te hê om te laai in hierdie biblioteek package-- 648 00:38:11,550 --> 00:38:14,500 hierdie pakket genaamd buitelandse. 649 00:38:14,500 --> 00:38:16,690 En as jy nie het nie die pakket, dink ek 650 00:38:16,690 --> 00:38:19,180 buitelandse is een van die ingeboude in kinders. 651 00:38:19,180 --> 00:38:31,150 Anders, kan jy ook doen install.packages 652 00:38:31,150 --> 00:38:33,180 en dit sal die pakket installeer. 653 00:38:33,180 --> 00:38:36,878 En dit sal vir jou R. Uh, nee. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 En dan is ek net gaan om te stop dit omdat ek het dit reeds. 656 00:38:43,140 --> 00:38:46,920 >> Maar wat is regtig lekker oor R is dat die pakket bestuur 657 00:38:46,920 --> 00:38:48,510 stelsel is baie elegant. 658 00:38:48,510 --> 00:38:52,470 Want dit sal alles stoor baie mooi vir jou. 659 00:38:52,470 --> 00:38:59,780 So in hierdie geval, dit gaan om te slaan dit in, glo ek, hierdie biblioteek hier. 660 00:38:59,780 --> 00:39:02,390 >> So wanneer jy wil nuwe pakkette te installeer, 661 00:39:02,390 --> 00:39:04,980 dit is net so eenvoudig soos doen install.packages 662 00:39:04,980 --> 00:39:07,500 en R sal almal te bestuur die pakkette vir jou. 663 00:39:07,500 --> 00:39:12,900 So jy hoef nie iets te doen in Python, waar jy moet eksterne pakket 664 00:39:12,900 --> 00:39:15,330 bestuurders soos papier Anaconda waar jy 665 00:39:15,330 --> 00:39:18,310 doing-- jy installeer die pakkette buite Python 666 00:39:18,310 --> 00:39:20,940 en dan probeer jy dit self uit te voer. 667 00:39:20,940 --> 00:39:22,210 So, dit is baie mooi manier. 668 00:39:22,210 --> 00:39:25,590 >> En install.packages vereis internet. 669 00:39:25,590 --> 00:39:31,950 Dit neem dit van 'n bediener en die bron wat 670 00:39:31,950 --> 00:39:33,960 versamel al die pakkette is CRAN genoem. 671 00:39:33,960 --> 00:39:40,690 En jy kan spesifiseer watter soort spieël jy wil die pakkette te laai van. 672 00:39:40,690 --> 00:39:43,420 >> So hier is ek neem hierdie dataset. 673 00:39:43,420 --> 00:39:46,240 Ek lees dit in die gebruik van hierdie funksie. 674 00:39:46,240 --> 00:39:49,360 So laat my gaan voort en doen dit. 675 00:39:49,360 --> 00:39:52,900 >> So laat ons aanvaar dat jy het hierdie dataset 676 00:39:52,900 --> 00:39:55,550 en jy het absoluut geen idee wat dit is. 677 00:39:55,550 --> 00:39:58,560 En dit kom eintlik op redelik dikwels in die bedryf 678 00:39:58,560 --> 00:40:00,910 waar jy net hierdie tonne en tonne van morsig dinge 679 00:40:00,910 --> 00:40:02,890 en hulle is ongelooflik sonder etiket. 680 00:40:02,890 --> 00:40:06,380 So hier het ek hierdie dataset en ek weet nie 681 00:40:06,380 --> 00:40:08,400 wat dit is, sodat ek net wys om dit te sien. 682 00:40:08,400 --> 00:40:10,620 >> So ek gaan eerste hoof te doen. 683 00:40:10,620 --> 00:40:14,190 So ek die eerste ses kyk kolomme van wat hierdie dataset is. 684 00:40:14,190 --> 00:40:21,730 So, dit is die staat, pres04, en dan al hierdie verskillende soort van kolomme. 685 00:40:21,730 --> 00:40:25,612 En wat is interessant hier, dink ek, is dat jy 686 00:40:25,612 --> 00:40:27,945 sou aanvaar dat dit lyk soos 'n soort van die verkiesing. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 En ek dink net uit kyk na die lêer 689 00:40:32,190 --> 00:40:41,070 noem dit 'n soort van die versameling van data oor kandidate of kiesers 690 00:40:41,070 --> 00:40:44,920 wat vir 'n spesifieke presidente gestem of president kandidate 691 00:40:44,920 --> 00:40:46,550 vir die 2004-verkiesing. 692 00:40:46,550 --> 00:40:52,920 >> So hier is waardes 1, 2 so 'n manier te stoor 693 00:40:52,920 --> 00:40:56,540 die president kandidate is hulle name. 694 00:40:56,540 --> 00:40:59,780 In hierdie geval, dit lyk soos hulle is net heelgetalwaardes. 695 00:40:59,780 --> 00:41:04,030 So 2004, was dit Bush versus Kerry Ek glo nie. 696 00:41:04,030 --> 00:41:09,010 En nou, kom ons sê jy weet net nie of 1 stem ooreen met Bush of 2 697 00:41:09,010 --> 00:41:11,703 ooreenstem met Kerry of en so aan en so voort, reg? 698 00:41:11,703 --> 00:41:15,860 >> En dit is net vir my, 'n redelik algemene probleem. 699 00:41:15,860 --> 00:41:18,230 So wat kan jy doen in hierdie geval? 700 00:41:18,230 --> 00:41:20,000 So laat ons gaan al hierdie ander dinge. 701 00:41:20,000 --> 00:41:22,790 >> staat, ek neem hierdie kom uit verskillende lande. 702 00:41:22,790 --> 00:41:25,100 partyid, inkomste. 703 00:41:25,100 --> 00:41:27,710 Kom ons kyk na partyid. 704 00:41:27,710 --> 00:41:32,800 So miskien een ding wat jy kan doen, is om kyk na elk van die waarnemings 705 00:41:32,800 --> 00:41:36,250 wat 'n partyid van die Republikeinse of demokratiese of iets. 706 00:41:36,250 --> 00:41:38,170 So laat ons net kyk na wat partyid is. 707 00:41:38,170 --> 00:41:41,946 >> So ek gaan neem dat en dan gaan ek 708 00:41:41,946 --> 00:41:47,960 hierdie dollar teken te doen operateur wat ek gedoen het voorheen 709 00:41:47,960 --> 00:41:50,770 en dit gaan subset aan daardie kolom. 710 00:41:50,770 --> 00:41:57,760 En dan gaan ek hierdie aan die hoof in 20, net om te sien wat dit lyk. 711 00:41:57,760 --> 00:42:00,170 >> So dit is net 'n klomp van die NAS. 712 00:42:00,170 --> 00:42:02,800 So met ander woorde, jy het ontbreek data oor hierdie ouens. 713 00:42:02,800 --> 00:42:08,100 Maar jy moet ook agterkom dat partyid is 'n faktor 714 00:42:08,100 --> 00:42:10,030 so dit gee jou verskillende kategorieë. 715 00:42:10,030 --> 00:42:14,170 So met ander woorde, kan partyid neem Demokratiese, Republikeinse, Onafhanklike, 716 00:42:14,170 --> 00:42:16,640 of iets anders. 717 00:42:16,640 --> 00:42:23,940 >> So laat ons gaan voort en laat ons sien watter van hierdie is-- O, OK. 718 00:42:23,940 --> 00:42:28,480 So ek gaan subset te partyid en dan 719 00:42:28,480 --> 00:42:32,780 kyk na watter is Demokratiese, byvoorbeeld. 720 00:42:32,780 --> 00:42:37,150 Dit gaan vir jou 'n Boole, 'n groot Boole van TRUEs en FALSEs. 721 00:42:37,150 --> 00:42:41,630 >> En nou, kom ons sê ek wil te subset van hierdie ouens. 722 00:42:41,630 --> 00:42:47,260 So dit gaan my dat te neem en subset na wat ookal waarnemings 723 00:42:47,260 --> 00:42:48,910 het partyid gelykes gelyk demokratiese. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 En dit is nogal lank, weens daar is so baie van hulle. 726 00:42:55,180 --> 00:42:59,060 So nou, ek gaan om dit te kop in 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> En as jy agterkom, is gelyk aan gelykes is interessant dat jy 729 00:43:11,270 --> 00:43:13,250 already-- jy ook met die NAS. 730 00:43:13,250 --> 00:43:19,010 So in hierdie geval, het jy nog nie kan kry enige inligting, want nou het jy NAS 731 00:43:19,010 --> 00:43:22,650 en jy wil net om te sien wat van die waarneming ooreenstem met demokratiese 732 00:43:22,650 --> 00:43:24,670 en nie dié van ontbrekende waardes hulself. 733 00:43:24,670 --> 00:43:27,680 So hoe sal jy ontslae te raak van hierdie NAS? 734 00:43:27,680 --> 00:43:36,410 >> So hier is ek net die op-sleutel op my wyser en dan sê die skuif. 735 00:43:36,410 --> 00:43:39,778 En dan is hier is ek net gaan is.na datpartyid te sê. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 So dit en en sal twee verskillende Boole vektore 738 00:43:52,720 --> 00:43:57,160 en sê dit gaan wees Ware en valse byvoorbeeld. 739 00:43:57,160 --> 00:43:59,190 So dit gaan hierdie komponent-wyse te doen. 740 00:43:59,190 --> 00:44:02,910 So hier ek sê neem die data raam, subset 741 00:44:02,910 --> 00:44:10,170 aan die kinders wat ooreenstem met demokratiese, en verwyder enige van hulle wat nie NA. 742 00:44:10,170 --> 00:44:13,540 >> Dus moet hierdie will-- gee jou iets. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Kom ons kyk is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Kom ons probeer is.na datpartyid. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 En dit moet gee you-- sorry-- net 'n Boole vektor. 749 00:44:45,290 --> 00:44:49,260 En dan, want dit is so lank, Ek gaan subset tot 20. 750 00:44:49,260 --> 00:44:49,760 OK. 751 00:44:49,760 --> 00:44:51,570 So dit moet werk. 752 00:44:51,570 --> 00:44:54,700 >> En hierdie een sal ook TRUEs. 753 00:44:54,700 --> 00:45:01,830 Ag, so my fout hier is dat I'm-- ek gebruik C ++ en R uitruilbaar so ek maak 754 00:45:01,830 --> 00:45:03,590 hierdie fout al die tyd. 755 00:45:03,590 --> 00:45:05,807 Die en operateur eintlik die een wat jy wil. 756 00:45:05,807 --> 00:45:08,140 Jy wil nie om te gebruik twee -karakters, net 'n enkele een. 757 00:45:08,140 --> 00:45:14,970 758 00:45:14,970 --> 00:45:17,010 OK. 759 00:45:17,010 --> 00:45:18,140 >> So laat ons sien. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Sodat ons subsetted aan die partyid waar hulle is demokratiese 762 00:45:23,920 --> 00:45:25,300 en hulle is nie van ontbrekende waardes. 763 00:45:25,300 --> 00:45:27,690 En nou, laat ons kyk na watter hulle het vir. 764 00:45:27,690 --> 00:45:31,530 So lyk dit soos die meeste van hulle het vir 1. 765 00:45:31,530 --> 00:45:36,090 So ek gaan om voort te gaan en sê dit is Kerry. 766 00:45:36,090 --> 00:45:39,507 >> En so, kan jy ook gaan na die Republikeinse 767 00:45:39,507 --> 00:45:41,090 en hopelik, hierdie moet gee jou 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 Dit is net 'n klomp van die verskillende kolomme. 770 00:45:51,770 --> 00:45:53,070 En inderdaad, dit is 2. 771 00:45:53,070 --> 00:45:55,750 So partyid al Republikeinse, die meeste van hulle stem vir 2. 772 00:45:55,750 --> 00:45:58,390 >> So dit lyk, net deur te kyk na hierdie, 773 00:45:58,390 --> 00:46:00,600 Republikeinse gaan wees 'n very-- of die partyid 774 00:46:00,600 --> 00:46:02,790 gaan 'n baie wees groot faktor in die bepaling van 775 00:46:02,790 --> 00:46:05,420 watter kandidaat hulle is gaan stem. 776 00:46:05,420 --> 00:46:07,120 En dit is natuurlik waar in die algemeen. 777 00:46:07,120 --> 00:46:10,139 En dit ooreenstem met jou intuïsie, natuurlik. 778 00:46:10,139 --> 00:46:11,930 So dit lyk asof ek loop uit van die tyd so 779 00:46:11,930 --> 00:46:17,040 laat my net moet voortgaan en toon 'n paar vinnige beelde. 780 00:46:17,040 --> 00:46:21,120 So hier is iets wat effens meer ingewikkeld met visualisering. 781 00:46:21,120 --> 00:46:26,450 So in hierdie geval, dit is 'n baie eenvoudige ontleding van net nagaan wat 782 00:46:26,450 --> 00:46:28,500 die president van '04 is. 783 00:46:28,500 --> 00:46:33,920 >> So in hierdie geval, kom ons sê jy wou om hierdie vraag te beantwoord. 784 00:46:33,920 --> 00:46:38,540 So dink ons ​​wou die stem te leer ken gedrag in die 2004 president verkiesing 785 00:46:38,540 --> 00:46:41,170 en hoe dit verskil van ras. 786 00:46:41,170 --> 00:46:44,380 So nie net wat jy wil sien die stem gedrag, 787 00:46:44,380 --> 00:46:47,860 maar jy wil subset van elke ras en soort van 'n opsomming van dit. 788 00:46:47,860 --> 00:46:50,770 En jy kan net vertel deur hierdie komplekse notasie 789 00:46:50,770 --> 00:46:52,580 dat dit is 'n soort van om vaag. 790 00:46:52,580 --> 00:46:56,390 >> So een van die meer gevorderde R pakkette wat ook soort van onlangse 791 00:46:56,390 --> 00:47:00,070 genoem dplyr. 792 00:47:00,070 --> 00:47:03,060 So is dit hierdie een reg hier. 793 00:47:03,060 --> 00:47:08,080 En ggg-- ggplot2 is net 'n mooi manier van doen beter visualisaties 794 00:47:08,080 --> 00:47:09,400 as die gebou-in-een. 795 00:47:09,400 --> 00:47:11,108 >> So ek gaan om te laai hierdie twee biblioteke. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 En dan, ek gaan om te gaan voor en hardloop hierdie opdrag. 798 00:47:16,950 --> 00:47:19,050 Jy kan net behandel dit as 'n swart boks. 799 00:47:19,050 --> 00:47:23,460 >> Wat gebeur is dat die pyp operateur is verby in hierdie argument 800 00:47:23,460 --> 00:47:24,110 in hier. 801 00:47:24,110 --> 00:47:28,070 So ek sê groep dat ras en dan president 04. 802 00:47:28,070 --> 00:47:31,530 En dan, al hierdie ander opdragte is die filter en dan op te som 803 00:47:31,530 --> 00:47:34,081 waar ek doen telling en dan is ek die plot dit hier. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 OK cool. 806 00:47:42,500 --> 00:47:44,620 So laat ons gaan voort en sien wat dit daar lyk. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> So, wat hier gebeur, is dat ek net geplot elk van die wedstryde en dan 809 00:47:57,290 --> 00:47:59,670 watter hulle het vir. 810 00:47:59,670 --> 00:48:03,492 En hierdie twee verskillende waardes ooreenstem met 2 en 1. 811 00:48:03,492 --> 00:48:05,325 As jy wil meer te wees elegant, kan jy ook 812 00:48:05,325 --> 00:48:11,770 net spesifiseer dat 2 Kerry-- of 2 is Bush, en dan 1 is Kerry. 813 00:48:11,770 --> 00:48:13,700 En jy kan ook ' wat in jou legende. 814 00:48:13,700 --> 00:48:17,410 >> En jy kan ook verdeel hierdie staafgrafieke. 815 00:48:17,410 --> 00:48:19,480 Omdat een ding is dat, as jy agterkom, 816 00:48:19,480 --> 00:48:24,560 dit is nie baie maklik om te identifiseer Watter van hierdie twee waardes is groter. 817 00:48:24,560 --> 00:48:27,920 So een ding wat jy graag wil hê om doen, is om hierdie blou gebied 818 00:48:27,920 --> 00:48:31,855 en net beweeg dit hier sodat jy kan hierdie twee kante mekaar vergelyk deur. 819 00:48:31,855 --> 00:48:34,480 En ek dink dit is iets wat ek nie tyd het om nou te doen nie, 820 00:48:34,480 --> 00:48:36,660 maar dit is ook baie maklik om te doen. 821 00:48:36,660 --> 00:48:40,310 Jy kan net kyk na die man bladsye van ggplot. 822 00:48:40,310 --> 00:48:47,170 So jy kan net nie ggplot soos wat en lees in hierdie man bladsy. 823 00:48:47,170 --> 00:48:51,920 >> So laat my net vinnig wys jou 'n paar koel dinge. 824 00:48:51,920 --> 00:48:57,610 Kom ons gaan voort en gaan aan- net 'n aansoek van die masjien leer. 825 00:48:57,610 --> 00:49:02,450 So kom ons sê ons het hierdie drie pakkette so ek gaan om dit te laai in. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 So dit net druk 'n paar inligting nadat ek gelaai in die ding. 828 00:49:09,170 --> 00:49:15,220 So ek sê hierdie read.csv, hierdie dataset, en nou 829 00:49:15,220 --> 00:49:18,940 Ek gaan om voort te gaan en te kyk en sien wat binne hierdie dataset. 830 00:49:18,940 --> 00:49:22,080 >> So het die eerste 20 waarnemings. 831 00:49:22,080 --> 00:49:27,190 So ek moet net X1, X2, en Y. So dit lyk soos 'n klomp van hierdie waardes 832 00:49:27,190 --> 00:49:31,640 is wat wissel van miskien 20 en 80 of so. 833 00:49:31,640 --> 00:49:37,700 En dan insgelyks vir X2 en dan hierdie Y lyk etikette 0 en 1 te wees. 834 00:49:37,700 --> 00:49:49,500 >> Om dit te verifieer, kan ek net doen opsomming data X1. 835 00:49:49,500 --> 00:49:51,660 En dan insgelyks vir al hierdie ander kolomme. 836 00:49:51,660 --> 00:49:55,300 So opsomming is 'n vinnige manier net wat jy vinnig waardes. 837 00:49:55,300 --> 00:49:56,330 O, jammer. 838 00:49:56,330 --> 00:49:58,440 Hierdie een moet wees Y. 839 00:49:58,440 --> 00:50:03,420 >> So in hierdie geval, gee die Quantiles, mediane, maxes as well. 840 00:50:03,420 --> 00:50:07,130 In hierdie geval, dataY, kan jy sien dat dit net gaan wees 0 en 1. 841 00:50:07,130 --> 00:50:10,100 Ook die gemiddelde sê 0.6, beteken net dat dit 842 00:50:10,100 --> 00:50:13,380 lyk soos ek het meer 1s as 0s. 843 00:50:13,380 --> 00:50:16,160 >> So laat my voor en show gaan jy wat dit lyk. 844 00:50:16,160 --> 00:50:17,470 So ek is net gaan om dit te stip. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Kom ons kyk hoe om dit te verwyder. 847 00:50:24,636 --> 00:50:30,492 848 00:50:30,492 --> 00:50:31,468 O OK. 849 00:50:31,468 --> 00:50:35,840 850 00:50:35,840 --> 00:50:36,340 OK. 851 00:50:36,340 --> 00:50:37,590 >> So dit is wat dit lyk. 852 00:50:37,590 --> 00:50:46,310 So lyk dit soos geel ek gespesifiseerde as 0, en dan rooi wat ek vermeld as 1s. 853 00:50:46,310 --> 00:50:52,190 So hier is dit lyk soos etiket punte en dit 854 00:50:52,190 --> 00:50:56,410 lyk soos jy wou net 'n paar soort groepering op hierdie punt. 855 00:50:56,410 --> 00:51:01,020 >> En laat my net voort en show gaan jy 'n paar van hierdie ingeboude funksies. 856 00:51:01,020 --> 00:51:03,580 So hier is lm. 857 00:51:03,580 --> 00:51:06,060 So dit is net probeer 'n lyn om dit aan te pas. 858 00:51:06,060 --> 00:51:08,640 So, wat is die beste manier om dat ek kan inpas n lyn soos 859 00:51:08,640 --> 00:51:14,020 dat dit die beste sal skei hierdie soort van groepering. 860 00:51:14,020 --> 00:51:21,790 En ideaal, kan jy net sien dat ek net loop al hierdie gebooie 861 00:51:21,790 --> 00:51:25,450 en dan, ek gaan voort en voeg die lyn. 862 00:51:25,450 --> 00:51:28,970 >> So dit lyk soos die beste raaiskoot. 863 00:51:28,970 --> 00:51:34,150 Dit is om die beste een wat verminder die fout in 'n poging om hierdie lyn te pas. 864 00:51:34,150 --> 00:51:40,000 Natuurlik, dit lyk soort goed, maar dit is nie die beste. 865 00:51:40,000 --> 00:51:43,130 En lineêre modelle, in algemene, gaan wees 866 00:51:43,130 --> 00:51:46,811 werklik 'n groot vir teorie en net soort van beginsels van die masjien gebou 867 00:51:46,811 --> 00:51:47,310 leer. 868 00:51:47,310 --> 00:51:50,330 Maar in die praktyk, jy gaan te wil iets meer algemeen te doen. 869 00:51:50,330 --> 00:51:54,280 >> So jy kan net probeer om iets genoem 'n neurale netwerk. 870 00:51:54,280 --> 00:51:57,110 Hierdie dinge is hoe meer algemeen. 871 00:51:57,110 --> 00:52:00,530 En hulle het net werk fantasties vir groot datastelle. 872 00:52:00,530 --> 00:52:07,080 So in hierdie geval, ons het net have-- laat se see-- ons nrow. 873 00:52:07,080 --> 00:52:09,010 So nrow is net sê aantal rye. 874 00:52:09,010 --> 00:52:11,790 So in hierdie geval, ek 100 waarnemings. 875 00:52:11,790 --> 00:52:15,010 >> So laat my gaan voort en maak 'n neurale netwerk. 876 00:52:15,010 --> 00:52:18,620 So, dit is baie mooi want ek kan net sê nnet 877 00:52:18,620 --> 00:52:21,767 en dan is ek agteruit Y. So het die Y is dat kolom. 878 00:52:21,767 --> 00:52:23,850 En dan agteruit dit op die ander twee veranderlikes. 879 00:52:23,850 --> 00:52:27,360 So, dit is korter notasie vir X1 en X2. 880 00:52:27,360 --> 00:52:29,741 >> So laat ons gaan voort en hardloop hierdie. 881 00:52:29,741 --> 00:52:30,240 O, jammer. 882 00:52:30,240 --> 00:52:32,260 Ek moet hierdie hele ding uit te voer. 883 00:52:32,260 --> 00:52:37,500 En dit is net die druk van notasie vir hoe vinnig of nie vinnig dit 884 00:52:37,500 --> 00:52:38,460 konvergeer. 885 00:52:38,460 --> 00:52:41,420 So dit lyk soos dit het konvergeer. 886 00:52:41,420 --> 00:52:44,970 So laat my voor en druk gaan uit wat dit daar lyk. 887 00:52:44,970 --> 00:52:51,260 >> Sien hier is die foto en hier is 'n kontoer wys hoe goed dit pas. 888 00:52:51,260 --> 00:52:56,380 En dit is just-- jy kan sien dit wat dit is baie, baie mooi. 889 00:52:56,380 --> 00:52:59,400 Dit kan selfs wees overfitting, maar jy kan ook 890 00:52:59,400 --> 00:53:03,390 rekening vir hierdie met ander tegnieke soos kruis-validering. 891 00:53:03,390 --> 00:53:06,180 En dit is ook gebou in R. 892 00:53:06,180 --> 00:53:09,170 >> En laat my net wys jou ondersteun vektor masjien. 893 00:53:09,170 --> 00:53:12,470 Dit is 'n ander baie algemeen tegniek in die masjien leer. 894 00:53:12,470 --> 00:53:18,550 Dit is baie soortgelyk aan lineêre modelle, maar dit gebruik wat 'n kern metode genoem. 895 00:53:18,550 --> 00:53:22,790 En laat ons sien hoe goed wat nie. 896 00:53:22,790 --> 00:53:26,430 So hierdie een is baie soortgelyk aan hoe goed 'n neurale netwerk voer, 897 00:53:26,430 --> 00:53:27,900 maar dit is baie meer gladder. 898 00:53:27,900 --> 00:53:35,740 En dit is die basis van what-- hoe SVMs werk. 899 00:53:35,740 --> 00:53:40,250 >> So dit is net 'n baie vinnige oorsig van sommige 900 00:53:40,250 --> 00:53:43,822 van die ingeboude funksies wat jy kan doen en ook 'n paar van die data-eksplorasie. 901 00:53:43,822 --> 00:53:45,905 So laat my net voort te gaan en terug te gaan na die skyfies. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> So natuurlik, dit is nie baie omvattend. 904 00:53:53,670 --> 00:53:57,140 En dit is regtig net 'n teaser toon wat jy regtig kan doen in R. 905 00:53:57,140 --> 00:53:59,100 So as jy wil, net soos om meer te leer, hier 906 00:53:59,100 --> 00:54:01,210 is 'n klomp van die verskillende bronne. 907 00:54:01,210 --> 00:54:06,890 >> So as jy lief vir handboeke of jy net lief vir lees dinge online, 908 00:54:06,890 --> 00:54:09,670 dan is dit 'n fantastiese een deur Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 wat ook geskep om al hierdie regtig cool pakkette. 910 00:54:13,010 --> 00:54:17,420 As jy lief is vir video's, dan Berkeley het 'n awesome Boot Camp 911 00:54:17,420 --> 00:54:21,060 dit is several-- dit is soort van 'n lang. 912 00:54:21,060 --> 00:54:24,210 En dit sal jy amper leer alles wat jy wil weet oor R. 913 00:54:24,210 --> 00:54:27,770 >> En so, daar is Codeacademy en al hierdie ander soort 914 00:54:27,770 --> 00:54:29,414 interaktiewe webtuistes. 915 00:54:29,414 --> 00:54:31,580 Hulle is ook om common-- meer en meer algemeen. 916 00:54:31,580 --> 00:54:33,749 So, dit is baie soortgelyk aan Codeacademy. 917 00:54:33,749 --> 00:54:35,790 En uiteindelik, as jy net wil Gemeenskap en te help, 918 00:54:35,790 --> 00:54:38,800 dit is 'n klomp van die dinge wat jy kan gaan na. 919 00:54:38,800 --> 00:54:40,880 Dit is duidelik dat ons nog steeds gebruik poslyste, net 920 00:54:40,880 --> 00:54:44,860 soos byna elke ander programmeertaal gemeenskap. 921 00:54:44,860 --> 00:54:47,880 En #rstats, dit is ons gemeenskap Twitter. 922 00:54:47,880 --> 00:54:49,580 Dit is eintlik baie algemeen. 923 00:54:49,580 --> 00:54:50,850 En dan gebruiker! 924 00:54:50,850 --> 00:54:52,340 Is net ons konferensie. 925 00:54:52,340 --> 00:54:55,390 >> En dan, natuurlik, kan jy gebruik om al hierdie ander Q & A dinge, 926 00:54:55,390 --> 00:54:57,680 soos Stack oorloop, Google, en dan GitHub. 927 00:54:57,680 --> 00:55:00,490 Omdat die meeste van hierdie pakkette en 'n groot deel van die gemeenskap 928 00:55:00,490 --> 00:55:03,420 sal gesentreer word rondom die ontwikkeling van kode, omdat dit open source. 929 00:55:03,420 --> 00:55:05,856 En dit is net regtig mooi op GitHub. 930 00:55:05,856 --> 00:55:08,730 En ten slotte, kan jy my kontak indien jy moet net 'n vinnige vrae. 931 00:55:08,730 --> 00:55:13,530 So jy my kan vind op Twitter hier, my webwerf, en net my e-pos. 932 00:55:13,530 --> 00:55:17,840 So hopelik, dit was something-- net 'n kort teaser 933 00:55:17,840 --> 00:55:20,900 van wat R is regtig in staat om dit te doen. 934 00:55:20,900 --> 00:55:23,990 En hopelik, jy moet net kyk uit hierdie drie skakels 935 00:55:23,990 --> 00:55:25,760 en kyk wat jy kan meer doen. 936 00:55:25,760 --> 00:55:28,130 En ek dink dit is net oor dit. 937 00:55:28,130 --> 00:55:28,630 Dankie. 938 00:55:28,630 --> 00:55:30,780 >> [Applous] 939 00:55:30,780 --> 00:55:31,968