1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [GIOCO MUSIC] 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 Il mio nome Dustin. 6 00:00:14,980 --> 00:00:18,419 Quindi io presenterò Analisi dei dati in R. 7 00:00:18,419 --> 00:00:19,710 Solo un po 'di me stesso. 8 00:00:19,710 --> 00:00:24,320 Sono attualmente uno studente laureato in Scienze Ingegneria e applicate. 9 00:00:24,320 --> 00:00:28,330 Io studio un incrocio di learning e statistica machine 10 00:00:28,330 --> 00:00:31,375 così Analisi dei dati in R è davvero fondamentale per quello che 11 00:00:31,375 --> 00:00:33,790 Faccio ogni giorno. 12 00:00:33,790 --> 00:00:35,710 >> E R è particolarmente buono per l'analisi dei dati 13 00:00:35,710 --> 00:00:39,310 perché è molto buono per la prototipazione. 14 00:00:39,310 --> 00:00:43,590 E di solito, quando si sta facendo una sorta di analisi dei dati, molti dei problemi 15 00:00:43,590 --> 00:00:44,920 stanno per cognitiva. 16 00:00:44,920 --> 00:00:48,700 E così si vogliono solo alcuni davvero buona lingua 17 00:00:48,700 --> 00:00:53,770 è solo un bene per fare funzioni integrate, in contrapposizione 18 00:00:53,770 --> 00:00:57,430 per avere a che fare con le cose di basso livello. 19 00:00:57,430 --> 00:01:01,040 Quindi, in principio, sto solo andando per introdurre quello che è R, perché avrebbe 20 00:01:01,040 --> 00:01:04,540 si desidera utilizzarlo, e poi andare oltre in qualche demo, 21 00:01:04,540 --> 00:01:07,060 e basta andare da lì. 22 00:01:07,060 --> 00:01:08,150 >> Allora, qual è R? 23 00:01:08,150 --> 00:01:11,180 R è solo un linguaggio sviluppato per il calcolo statistico 24 00:01:11,180 --> 00:01:12,450 e visualizzazione. 25 00:01:12,450 --> 00:01:16,000 Che cosa questo significa è che si tratta di un linguaggio molto eccellente 26 00:01:16,000 --> 00:01:22,400 per qualsiasi tipo di cosa che si occupa di incertezza o la visualizzazione dei dati. 27 00:01:22,400 --> 00:01:24,850 In modo da avere tutti questi distribuzioni di probabilità. 28 00:01:24,850 --> 00:01:27,140 Ci stanno per essere funzioni integrate. 29 00:01:27,140 --> 00:01:31,650 Avrete anche eccellenti tramando pacchetti. 30 00:01:31,650 --> 00:01:34,110 >> Python è un altro concorrente lingua per i dati. 31 00:01:34,110 --> 00:01:40,020 E una cosa che trovo che R è molto meglio è la visualizzazione. 32 00:01:40,020 --> 00:01:45,200 Quindi, quello che vedrete nella demo come bene è solo un linguaggio molto intuitivo 33 00:01:45,200 --> 00:01:48,050 che funziona molto bene. 34 00:01:48,050 --> 00:01:53,140 E 'anche gratuito e open source, come è un altro buon linguaggio immagino. 35 00:01:53,140 --> 00:01:55,440 >> E qui, un gruppo di soli parole chiave gettati voi. 36 00:01:55,440 --> 00:02:00,450 E 'dinamica, nel senso se si dispone di un tipo specifico assegnato a un oggetto 37 00:02:00,450 --> 00:02:02,025 che sarà solo cambiare al volo. 38 00:02:02,025 --> 00:02:05,670 E 'pigro quindi è intelligente su come lo fa calcoli. 39 00:02:05,670 --> 00:02:12,250 Funzionale significa che può davvero funzionare in base al largo di funzioni così anything-- 40 00:02:12,250 --> 00:02:16,910 qualsiasi tipo di manipolazione sei facendo, sarà basato off funzioni. 41 00:02:16,910 --> 00:02:20,162 >> Quindi operatori binari, per esempio, sono funzioni solo intrinsecamente. 42 00:02:20,162 --> 00:02:21,870 E tutto ciò che si sta andando a fare è 43 00:02:21,870 --> 00:02:24,690 andando a essere eseguito off funzioni stessa. 44 00:02:24,690 --> 00:02:27,140 E poi orientato agli oggetti pure. 45 00:02:27,140 --> 00:02:30,930 >> Così qui è una trama XKCD. 46 00:02:30,930 --> 00:02:34,350 Non solo perché mi sento come XKCD è fondamentale per qualsiasi tipo 47 00:02:34,350 --> 00:02:37,770 di presentazione, ma perché Mi sento come questo davvero 48 00:02:37,770 --> 00:02:42,160 martelli punto che un sacco di momento in cui si sta facendo una sorta di dati 49 00:02:42,160 --> 00:02:46,570 analisi, il problema non è tanto quanto velocemente si corre, 50 00:02:46,570 --> 00:02:49,850 ma quanto tempo sta andando a prendere per programmare l'attività. 51 00:02:49,850 --> 00:02:54,112 Così qui è solo analizzare se strategia a o b è più efficiente. 52 00:02:54,112 --> 00:02:55,820 Questo sarà qualcosa che sei 53 00:02:55,820 --> 00:02:58,290 andare a fare molto con in sorta di linguaggi di basso livello 54 00:02:58,290 --> 00:03:03,440 dove hai a che fare con difetti seg, allocazione della memoria, inizializzazione, 55 00:03:03,440 --> 00:03:05,270 anche rendendo le funzioni built-in. 56 00:03:05,270 --> 00:03:09,920 E questa roba è tutto gestito molto, molto elegante in R. 57 00:03:09,920 --> 00:03:12,839 >> Quindi, solo a martellare questo punto, il più grande collo di bottiglia 58 00:03:12,839 --> 00:03:13,880 sta per essere cognitivo. 59 00:03:13,880 --> 00:03:17,341 Quindi analisi dei dati è un problema molto difficile. 60 00:03:17,341 --> 00:03:19,340 Sia che si sta facendo machine learning o sei 61 00:03:19,340 --> 00:03:22,550 facendo proprio una sorta di esplorazione dei dati di base, 62 00:03:22,550 --> 00:03:25,290 non si vuole avere prendere un documento 63 00:03:25,290 --> 00:03:27,440 e quindi compilare qualcosa che ogni volta che si 64 00:03:27,440 --> 00:03:31,010 vogliono vedere ciò che una colonna assomiglia, cosa particolare le voci in una matrice 65 00:03:31,010 --> 00:03:32,195 assomiglia. 66 00:03:32,195 --> 00:03:34,320 Così si vuole solo avere alcuni interfaccia veramente bello 67 00:03:34,320 --> 00:03:37,740 è possibile eseguire una semplice funzione che gli indici a qualunque 68 00:03:37,740 --> 00:03:41,870 vuoi e basta eseguire da lì. 69 00:03:41,870 --> 00:03:44,190 E avete bisogno di dominio lingue specifiche per questo. 70 00:03:44,190 --> 00:03:51,750 E R sarà davvero aiutare a definire il problema e risolverlo in questo modo. 71 00:03:51,750 --> 00:03:58,690 >> Così qui è una mostra programmazione trama popolarità di R come è andata nel corso del tempo. 72 00:03:58,690 --> 00:04:04,060 Quindi, come si può vedere, come la 2013 o quindi appena fatto saltare in aria tremendamente. 73 00:04:04,060 --> 00:04:09,570 E questo è stato solo a causa di tale enorme tendenza nel settore della tecnologia 74 00:04:09,570 --> 00:04:10,590 su Big Data. 75 00:04:10,590 --> 00:04:13,010 Inoltre, non solo la tecnologia industria, ma in realtà 76 00:04:13,010 --> 00:04:16,490 qualsiasi che-- industria perché molte industrie 77 00:04:16,490 --> 00:04:20,589 sono una sorta di fondamentale cercando di risolvere questi problemi. 78 00:04:20,589 --> 00:04:24,590 E di solito, si può avere qualche buon modo di misurare questi problemi 79 00:04:24,590 --> 00:04:29,720 o addirittura definirli o risolverli utilizzando i dati. 80 00:04:29,720 --> 00:04:35,430 Quindi penso che in questo momento R è il 11 ° lingua più popolare sul TIOBE 81 00:04:35,430 --> 00:04:38,200 ed è cresciuta da allora. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Quindi, ecco un po 'di più caratteristiche di R. Ha 84 00:04:43,080 --> 00:04:46,900 un numero enorme di pacchetti e per tutte queste cose diverse. 85 00:04:46,900 --> 00:04:52,470 Così ogni volta che hai un certo problema, la maggior parte 86 00:04:52,470 --> 00:04:55,060 il tempo di R avrà tale funzione per voi. 87 00:04:55,060 --> 00:04:58,520 Quindi, se si desidera costruire una sorta di macchina 88 00:04:58,520 --> 00:05:02,770 algoritmo di apprendimento chiamato Casuale Foresta o Decision Trees, 89 00:05:02,770 --> 00:05:07,530 o anche cercando di prendere la media di una funzione o una qualsiasi di queste cose, 90 00:05:07,530 --> 00:05:10,000 R avrà tale. 91 00:05:10,000 --> 00:05:14,190 >> E se non ti interessa ottimizzazione, una cosa che è comune 92 00:05:14,190 --> 00:05:17,430 è che dopo aver finito la prototipazione una sorta di linguaggio di alto livello, 93 00:05:17,430 --> 00:05:19,810 si buttare dentro-- vi sarà solo la porta che oltre 94 00:05:19,810 --> 00:05:21,550 a un certo linguaggio di basso livello. 95 00:05:21,550 --> 00:05:26,090 Cosa c'è di buono R è che una volta che sei fatta prototipazione, è possibile eseguire C ++, 96 00:05:26,090 --> 00:05:29,510 o Fortran, o qualsiasi di questi quelli più bassi di livello direttamente in R. 97 00:05:29,510 --> 00:05:32,320 Ecco, questo è realmente caratteristica fredda su R, 98 00:05:32,320 --> 00:05:35,930 se davvero a cuore il punto di ottimizzazione. 99 00:05:35,930 --> 00:05:39,490 >> Ed è anche molto buono per visualizzazioni web. 100 00:05:39,490 --> 00:05:43,530 Così D3.js, per esempio, è Credo che un altro seminario 101 00:05:43,530 --> 00:05:45,130 che abbiamo presentato oggi. 102 00:05:45,130 --> 00:05:48,510 E questo è davvero impressionante per facendo visualizzazioni interattive. 103 00:05:48,510 --> 00:05:54,460 E D3.js si presuppone una sorta di dati da tracciare 104 00:05:54,460 --> 00:05:58,080 e R è un ottimo modo di poter fare l'analisi dei dati prima di esportarlo 105 00:05:58,080 --> 00:06:04,220 verso D3.js o anche solo correre Comandi in R si D3.js, 106 00:06:04,220 --> 00:06:08,240 nonché tutti questi altre librerie come bene. 107 00:06:08,240 --> 00:06:13,041 >> Così che era solo l'introduzione di ciò che è R e perché si potrebbe usarlo. 108 00:06:13,041 --> 00:06:14,790 Così si spera, ho si convinse qualcosa 109 00:06:14,790 --> 00:06:18,460 su solo cercando di vedere che cosa è come. 110 00:06:18,460 --> 00:06:23,930 Quindi ho intenzione di andare avanti e passare attraverso alcuni fondamentali sugli oggetti R 111 00:06:23,930 --> 00:06:26,150 e ciò che si può davvero fare. 112 00:06:26,150 --> 00:06:29,690 >> Così qui è solo un mazzo di comandi matematica. 113 00:06:29,690 --> 00:06:35,000 Quindi dici you're-- si vuole costruire te stesso linguaggio e si desidera solo 114 00:06:35,000 --> 00:06:38,080 di avere un sacco di diversi strumenti. 115 00:06:38,080 --> 00:06:42,520 Qualsiasi tipo di operazione si pensa che ci si voglio è praticamente sta per essere in R. 116 00:06:42,520 --> 00:06:44,150 >> Così qui è 2 più 2. 117 00:06:44,150 --> 00:06:46,090 Qui è 2 volte pi. 118 00:06:46,090 --> 00:06:51,870 R ha un sacco di costanti incorporate che ti frequentemente usate come pi, e. 119 00:06:51,870 --> 00:06:56,230 >> E poi, ecco 7 più runif, così runif di 1. 120 00:06:56,230 --> 00:07:02,450 Questa è una funzione che è genera una uniforme casuale da 0 a 1. 121 00:07:02,450 --> 00:07:04,400 E poi c'è 3 alla potenza di 4. 122 00:07:04,400 --> 00:07:06,430 Ci sono radici quadrate. 123 00:07:06,430 --> 00:07:07,270 >> C'è log. 124 00:07:07,270 --> 00:07:14,500 Così log farà di base esponenziale per sé. 125 00:07:14,500 --> 00:07:18,337 E poi, se si specifica una base, poi si può fare quello base che si desidera. 126 00:07:18,337 --> 00:07:19,920 E poi qui ci sono alcuni altri comandi. 127 00:07:19,920 --> 00:07:22,180 In modo da avere 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Poi ci sono il resto. 129 00:07:24,910 --> 00:07:27,110 Allora avete scientifica Notazione se anche 130 00:07:27,110 --> 00:07:34,060 voglia di fare solo più e le cose più complicate. 131 00:07:34,060 --> 00:07:37,320 >> Così qui è l'assegnazione. 132 00:07:37,320 --> 00:07:40,830 Incarichi così tipico in R è fatto con una freccia 133 00:07:40,830 --> 00:07:43,440 quindi è inferiore e quindi il trattino. 134 00:07:43,440 --> 00:07:47,250 Così qui sto solo assegnando 3 per la val variabile. 135 00:07:47,250 --> 00:07:50,160 >> E poi sto stampando val e quindi stampa tre. 136 00:07:50,160 --> 00:07:53,920 Per impostazione predefinita, in interprete R, si stamperà le cose per voi 137 00:07:53,920 --> 00:07:57,280 così non è necessario specificare stampare un val ogni volta che si desidera stampare qualcosa. 138 00:07:57,280 --> 00:08:00,200 Si può solo fare val e allora lo farà per voi. 139 00:08:00,200 --> 00:08:04,380 >> Inoltre, è possibile utilizzare Equals tecnicamente come un operatore di assegnazione. 140 00:08:04,380 --> 00:08:07,190 Ci sono lievi sfumature tra utilizzando la freccia 141 00:08:07,190 --> 00:08:10,730 operatore e di uguale operatore per le assegnazioni. 142 00:08:10,730 --> 00:08:15,470 Per lo più per convenzione, tutti sarà solo utilizzare l'operatore freccia. 143 00:08:15,470 --> 00:08:21,850 >> E qui, sto assegnando questo Notazione obliqua denominata 1 colon 6. 144 00:08:21,850 --> 00:08:26,010 Questo genera un vettore da 1 a 6. 145 00:08:26,010 --> 00:08:29,350 E questo davvero bello perché poi basta assegnare il vettore di val 146 00:08:29,350 --> 00:08:34,270 e che funziona da solo. 147 00:08:34,270 --> 00:08:37,799 >> Quindi questo è già in corso da un single-- un dato molto intuitivo 148 00:08:37,799 --> 00:08:41,070 la struttura di un semplice doppio qualche tipo di tipo in un vettore 149 00:08:41,070 --> 00:08:45,670 e che raccoglierà tutto i valori scalari per voi. 150 00:08:45,670 --> 00:08:50,770 Così, dopo essere andato da scalare, si hanno oggetti R e questo è un vettore. 151 00:08:50,770 --> 00:08:55,610 Un vettore è un qualsiasi tipo di raccolta dello stesso tipo. 152 00:08:55,610 --> 00:08:58,150 Così qui sono un gruppo di vettori. 153 00:08:58,150 --> 00:08:59,800 >> Quindi questo è numerico. 154 00:08:59,800 --> 00:09:02,440 Numeric è il modo di R di dire doppio. 155 00:09:02,440 --> 00:09:07,390 E così per impostazione predefinita, qualsiasi numero sarà un doppio. 156 00:09:07,390 --> 00:09:13,150 >> Quindi, se avete c di 1,1, 3, negative 5.7, c è una funzione. 157 00:09:13,150 --> 00:09:16,760 Questo concatena tutti e tre numeri in un vettore. 158 00:09:16,760 --> 00:09:19,619 E questo essere-- quindi se si nota 3 di per sé, 159 00:09:19,619 --> 00:09:21,910 Normalmente si potrebbe pensare che questo è come un intero, 160 00:09:21,910 --> 00:09:25,050 ma perché tutti i vettori sono dello stesso tipo, 161 00:09:25,050 --> 00:09:28,660 questo è un vettore di doppi o numerico in questo caso. 162 00:09:28,660 --> 00:09:34,920 >> RNorm è una funzione che genera variables-- normale standard 163 00:09:34,920 --> 00:09:36,700 o valori normali standard. 164 00:09:36,700 --> 00:09:38,360 E sto specificando due di loro. 165 00:09:38,360 --> 00:09:43,840 Così sto facendo RNorm 2, assegnando che a sviluppatori, e poi sto stampando sviluppatori. 166 00:09:43,840 --> 00:09:47,350 Quindi questi sono solo due valori normali casuali. 167 00:09:47,350 --> 00:09:50,060 >> E poi INT se lo fai che ti interessano interi. 168 00:09:50,060 --> 00:09:54,650 Quindi questo è solo sulla memoria allocazione e salvare la dimensione della memoria. 169 00:09:54,650 --> 00:10:01,460 Quindi si dovrà accodare i numeri di capitale L. 170 00:10:01,460 --> 00:10:04,170 >> In generale, questo è Notazione storico di R 171 00:10:04,170 --> 00:10:06,940 per qualcosa chiamato intero lungo. 172 00:10:06,940 --> 00:10:09,880 Così la maggior parte del tempo, sarete essere trattare con doppie. 173 00:10:09,880 --> 00:10:15,180 E se mai sarà più tardi sul ottimizzare il codice, 174 00:10:15,180 --> 00:10:18,110 si può semplicemente aggiungere questi L's dopo o durante lo 175 00:10:18,110 --> 00:10:22,280 se siete come precognitiva su ciò si sta andando a fare queste variabili. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Così qui è un carattere vettoriale. 178 00:10:26,890 --> 00:10:31,440 Così, ancora una volta, sto concatenando tre corde questa volta. 179 00:10:31,440 --> 00:10:36,230 Si noti che le corde doppie e singole stringhe sono uguali in R. 180 00:10:36,230 --> 00:10:41,000 Così ho arthur e Marvin e di così quando sono fuori stampa, tutti 181 00:10:41,000 --> 00:10:43,210 stanno andando a mostrare corde doppie. 182 00:10:43,210 --> 00:10:45,880 E se anche voi volete includere la stringa doppia o singola 183 00:10:45,880 --> 00:10:50,070 nei vostri personaggi, allora si può o alternare le corde. 184 00:10:50,070 --> 00:10:53,540 >> Così Marvin per il secondo elemento, questo è 185 00:10:53,540 --> 00:10:56,380 andando a show-- voi appena hanno doppie corde 186 00:10:56,380 --> 00:10:59,050 e poi una singola stringa quindi questo è alternata. 187 00:10:59,050 --> 00:11:04,040 In caso contrario, se si desidera utilizzare un doppio operatore di stringa in una doppia corda 188 00:11:04,040 --> 00:11:07,090 quando si sta dichiarando, allora è sufficiente utilizzare l'operatore di fuga. 189 00:11:07,090 --> 00:11:10,600 Così si fa il doppio della stringa backslash. 190 00:11:10,600 --> 00:11:13,330 >> E, infine, abbiamo anche avere vettori logici. 191 00:11:13,330 --> 00:11:15,890 Così logical-- così TRUE e FALSE, e sono 192 00:11:15,890 --> 00:11:18,880 sta per essere tutte le lettere maiuscole. 193 00:11:18,880 --> 00:11:22,370 E poi, di nuovo, sto concatenando e poi assegnarli a bool. 194 00:11:22,370 --> 00:11:24,590 Così bool sta per dimostrare si VERO, FALSO e VERO. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Così qui è l'indicizzazione vectorized. 197 00:11:31,620 --> 00:11:34,870 Quindi, all'inizio, ho Sto prendendo un function-- 198 00:11:34,870 --> 00:11:39,230 questo si chiama un sequence-- sequenza da 2 a 12. 199 00:11:39,230 --> 00:11:42,490 E mi sto prendendo una sequenza 2. 200 00:11:42,490 --> 00:11:46,660 Così sta andando a fare 2, 4, 6, 8, 10 e 12. 201 00:11:46,660 --> 00:11:50,080 E poi, io sono l'indicizzazione per ottenere il terzo elemento. 202 00:11:50,080 --> 00:11:55,770 >> Quindi una cosa da tenere a mente è che gli indici di R a partire dal 1. 203 00:11:55,770 --> 00:12:00,550 Così vals 3 sta per dare il terzo elemento. 204 00:12:00,550 --> 00:12:04,580 Questa è una sorta di diverso dagli altri lingue dove inizia da zero. 205 00:12:04,580 --> 00:12:09,780 Quindi, in C o C ++, ad esempio, si è andando ad ottenere il quarto elemento. 206 00:12:09,780 --> 00:12:13,280 >> E qui è vals da 3 a 5. 207 00:12:13,280 --> 00:12:16,030 Così una cosa che è davvero cool è che si 208 00:12:16,030 --> 00:12:20,410 può generare variabili temporanee all'interno e poi basta usarli al volo. 209 00:12:20,410 --> 00:12:21,960 Così qui è da 3 a 5. 210 00:12:21,960 --> 00:12:25,070 Così sto generando un vettore 3, 4 e 5 e 211 00:12:25,070 --> 00:12:29,700 Sto indicizzazione per ottenere il terzo, quarto, e il quinto elemento. 212 00:12:29,700 --> 00:12:32,280 >> Così allo stesso modo, è possibile abstract questo per fare solo 213 00:12:32,280 --> 00:12:35,280 qualsiasi tipo di un vettore che ti dà l'indicizzazione. 214 00:12:35,280 --> 00:12:40,050 Così qui è vals e poi il primo, terzo, e sesto elementi. 215 00:12:40,050 --> 00:12:42,800 E poi, se volete per fare un complemento, 216 00:12:42,800 --> 00:12:45,210 quindi basta fare il meno dopo e che ti 217 00:12:45,210 --> 00:12:48,600 darvi tutto ciò che non è la primo, terzo, o sesto elemento. 218 00:12:48,600 --> 00:12:51,590 Quindi questo sarà 4, 8 e 10. 219 00:12:51,590 --> 00:12:54,380 >> E se si desidera ottenere ancora più avanzato, 220 00:12:54,380 --> 00:12:57,610 è possibile concatenare vettori booleani. 221 00:12:57,610 --> 00:13:05,210 Quindi questo indice sta per darvi questo vettore booleano lunghezza 6. 222 00:13:05,210 --> 00:13:07,280 Così rep TRUE comma 3. 223 00:13:07,280 --> 00:13:09,680 Questo si ripeterà TRUE tre volte. 224 00:13:09,680 --> 00:13:12,900 Quindi questo vi darà un vector VERO, VERO, VERO. 225 00:13:12,900 --> 00:13:17,470 >> rep FALSE 4-- questo sta per darvi un vettore di FALSO, FALSO, FALSO, FALSO. 226 00:13:17,470 --> 00:13:21,280 E poi c sta per concatenare questi due booleani insieme. 227 00:13:21,280 --> 00:13:24,090 Quindi si sta andando ad ottenere tre Trues e poi quattro FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> In modo che quando si vals indice, sei andando a ottenere il VERO, VERO, VERO. 229 00:13:28,460 --> 00:13:31,420 Così che sta per dire di sì, Voglio questi tre elementi. 230 00:13:31,420 --> 00:13:33,520 E poi FALSO, FALSO, FALSE, FALSE sta andando 231 00:13:33,520 --> 00:13:37,140 per dire no, non voglio quegli elementi quindi non sta andando a restituirli. 232 00:13:37,140 --> 00:13:41,490 >> E credo che ci sia in realtà un errore di battitura qui perché questo sta dicendo ripetere TRUE 3 233 00:13:41,490 --> 00:13:47,990 e ripetere FALSE 4, e tecnicamente, si hanno solo sei elementi così ripetono FALSE, 234 00:13:47,990 --> 00:13:50,470 dovrebbe essere ripetuta FALSE 3. 235 00:13:50,470 --> 00:13:55,260 Penso che R è anche abbastanza intelligente come che se si specifica 4 qui, poi 236 00:13:55,260 --> 00:13:56,630 Non sarà nemmeno errore fuori. 237 00:13:56,630 --> 00:13:58,480 Appena gli darà questo valore. 238 00:13:58,480 --> 00:14:00,970 Quindi sarà solo ignorare il quarto FALSE. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Così qui è l'assegnazione vectorized. 241 00:14:09,270 --> 00:14:15,480 Quindi set.seed-- questo solo imposta la seme per numeri pseudocasuali. 242 00:14:15,480 --> 00:14:20,110 Così sto impostando il seme 42, il che significa che se genero 243 00:14:20,110 --> 00:14:22,950 tre casuale normale valori, e poi se si 244 00:14:22,950 --> 00:14:27,400 Eseguire set.seed da soli computer utilizzando lo stesso valore 42, 245 00:14:27,400 --> 00:14:30,990 allora si ottiene anche il stessi tre normali casuali. 246 00:14:30,990 --> 00:14:33,411 >> Quindi questo è veramente buono per riproducibilità. 247 00:14:33,411 --> 00:14:35,910 Di solito, quando si sta facendo un po ' tipo di analisi scientifica, 248 00:14:35,910 --> 00:14:37,230 si vorrebbe impostare il seme. 249 00:14:37,230 --> 00:14:41,270 In questo modo altri scienziati può solo riprodurre esattamente lo stesso codice che avete 250 00:14:41,270 --> 00:14:44,790 fatto, perché avranno l'esatto stesse variabili aleatorie che-- o casuale 251 00:14:44,790 --> 00:14:47,270 valori che hai preso fuori pure. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> E così l'assegnazione vectorized qui sta mostrando i vals 1 a 2. 254 00:14:53,910 --> 00:14:59,290 Così prende i primi due elementi di vals e poi li assegna a 0. 255 00:14:59,290 --> 00:15:03,940 E poi, si può anche solo fare il cosa simile con i booleani. 256 00:15:03,940 --> 00:15:09,340 >> Quindi vals non è uguale a 0-- questa volontà dare un FALSE vettore, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 in questo caso. 258 00:15:10,350 --> 00:15:13,770 E poi, sta andando a dire qualsiasi di quegli indici che fossero vere, 259 00:15:13,770 --> 00:15:15,270 poi sta andando assegnare quello a 5. 260 00:15:15,270 --> 00:15:18,790 Così prende il terzo elemento qui e poi lo assegna a 5. 261 00:15:18,790 --> 00:15:22,300 >> E questo è davvero bello rispetto ai linguaggi di basso livello 262 00:15:22,300 --> 00:15:25,560 dove è necessario utilizzare cicli for per fare tutte queste cose vectorized 263 00:15:25,560 --> 00:15:30,281 perché è solo molto intuitivo ed è un unico one-liner. 264 00:15:30,281 --> 00:15:32,030 E ciò che è grande circa Notazione vectorized 265 00:15:32,030 --> 00:15:37,020 è che in R, questi sono specie di incorporato in modo che siano quasi più veloce 266 00:15:37,020 --> 00:15:42,490 come fare in un linguaggio di basso livello come invece di fare un ciclo for in R 267 00:15:42,490 --> 00:15:46,317 e poi averlo fare l'indicizzazione dinamica stessa. 268 00:15:46,317 --> 00:15:48,900 E che sarà più lento di fare questo genere di cose vectorized 269 00:15:48,900 --> 00:15:55,950 dove può farlo in parallelo, dove che sta facendo in filettatura fondamentalmente. 270 00:15:55,950 --> 00:15:58,650 >> Così qui è vettorializzare operazioni. 271 00:15:58,650 --> 00:16:04,920 Così sto generando un valore da 1 a 3, assegnazione che per vec1, da 3 a 5, vec2, 272 00:16:04,920 --> 00:16:05,950 sommandoli. 273 00:16:05,950 --> 00:16:11,490 Li aggiunge componente-saggio così è 1 plus 3, 2 più 4, e così via. 274 00:16:11,490 --> 00:16:13,330 >> vec1 tempi vec2. 275 00:16:13,330 --> 00:16:16,110 Questo moltiplica i due valori dei componenti saggio. 276 00:16:16,110 --> 00:16:21,830 Quindi è 1 volte 3, 2 volte 4, e poi 3 volte 5. 277 00:16:21,830 --> 00:16:28,250 >> E poi, allo stesso modo si può anche fare comparisons-- confronti logici. 278 00:16:28,250 --> 00:16:33,640 Quindi è FALSE FALSE TRUE in questo caso perché 1 non è superiore a 3, 279 00:16:33,640 --> 00:16:35,920 2 non è superiore a 4. 280 00:16:35,920 --> 00:16:41,160 Questo è, credo, un errore di battitura, 3 è sicuramente non superiore a 5. 281 00:16:41,160 --> 00:16:41,660 Sì. 282 00:16:41,660 --> 00:16:45,770 E così si può solo fare tutto queste semplici operazioni 283 00:16:45,770 --> 00:16:48,350 perché la loro ereditato dalle classi stesse. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Così che era solo il vettore. 286 00:16:52,580 --> 00:16:56,530 E questo è una specie di fondamentale Oggetto R perché dato un vettore, 287 00:16:56,530 --> 00:16:59,170 è possibile costruire gli oggetti più avanzate. 288 00:16:59,170 --> 00:17:00,560 >> Quindi, ecco una matrice. 289 00:17:00,560 --> 00:17:05,030 Questo è essenzialmente l'astrazione di ciò è una matrice stessa. 290 00:17:05,030 --> 00:17:10,099 Quindi in questo caso, è tre diversi vettori, dove ognuno è una colonna, 291 00:17:10,099 --> 00:17:12,710 o si può considerare come ciascuno è una riga. 292 00:17:12,710 --> 00:17:18,250 >> Così sto memorizzare una matrice da 1 a 9 e poi sto specificando 3 file. 293 00:17:18,250 --> 00:17:23,364 Così da 1 a 9 vi darà un vettore 1, 2, 3, 4, 5, 6, e fino a 9. 294 00:17:23,364 --> 00:17:29,250 >> Una cosa da tenere anche a mente è che Negozi R valori in formato column-major. 295 00:17:29,250 --> 00:17:34,160 Quindi, in altre parole, quando si vede 1 a 9, sta andando a memorizzare them-- 296 00:17:34,160 --> 00:17:36,370 che sta per essere 1, 2, 3 nella prima colonna, 297 00:17:36,370 --> 00:17:38,510 e poi si farà 4, 5, 6 nella seconda colonna, 298 00:17:38,510 --> 00:17:41,440 e poi 7, 8, 9 nella terza colonna. 299 00:17:41,440 --> 00:17:45,570 >> Ed ecco un altro funzioni comuni che è possibile utilizzare. 300 00:17:45,570 --> 00:17:49,650 Quindi dim mat, questo vi darà le dimensioni della matrice. 301 00:17:49,650 --> 00:17:52,620 E 'intenzione di tornare voi un vettore di dimensione. 302 00:17:52,620 --> 00:17:55,580 Quindi, in questo caso, poiché la nostra matrice è di 3 per 3, 303 00:17:55,580 --> 00:18:01,900 sta andando per darvi un vettore numerico che è 3 3. 304 00:18:01,900 --> 00:18:05,270 >> E qui è solo mostrando moltiplicazione di matrici. 305 00:18:05,270 --> 00:18:11,970 Così di solito, se lo farete asterisk-- così mat asterisco mat-- 306 00:18:11,970 --> 00:18:15,380 questo sta per essere funzionamento del componente-saggio 307 00:18:15,380 --> 00:18:17,300 o quello che è chiamato il prodotto di Hadamard. 308 00:18:17,300 --> 00:18:21,310 Così sta andando a fare ogni elemento componente-saggio. 309 00:18:21,310 --> 00:18:23,610 Tuttavia, se si desidera multiplication-- matrix 310 00:18:23,610 --> 00:18:29,380 quindi moltiplicando le prime volte fila prima colonna della seconda matrice 311 00:18:29,380 --> 00:18:34,510 e così on-- si usa questa operazione cento. 312 00:18:34,510 --> 00:18:38,110 >> E t di tappeto è solo un operazione per trasposizione. 313 00:18:38,110 --> 00:18:42,590 Così sto dicendo che prendere la trasposizione in la matrice, moltiplicarlo per la matrice 314 00:18:42,590 --> 00:18:43,090 stesso. 315 00:18:43,090 --> 00:18:45,006 E poi sta andando a tornare a un altro 3 316 00:18:45,006 --> 00:18:50,700 da 3 mostrando matrice il prodotto che ci si vuole. 317 00:18:50,700 --> 00:18:53,750 >> E così che era di matrice. 318 00:18:53,750 --> 00:18:56,020 Ecco quello che è chiamato un frame di dati. 319 00:18:56,020 --> 00:19:00,780 Un frame di dati si può pensare come una matrice, ma ogni colonna stessa 320 00:19:00,780 --> 00:19:02,990 sta per essere di tipo diverso. 321 00:19:02,990 --> 00:19:07,320 >> Così che cosa è veramente interessante di dati fotogrammi è che in analisi dati stessi, 322 00:19:07,320 --> 00:19:11,260 si sta andando ad avere tutto questo dati eterogenei e tutte queste realtà 323 00:19:11,260 --> 00:19:15,640 cose disordinato dove ciascuna delle colonne stessi possono essere di diversi tipi. 324 00:19:15,640 --> 00:19:21,460 Così qui sto dicendo a creare un frame di dati, fare interi da 1 a 3, 325 00:19:21,460 --> 00:19:24,750 e poi hanno anche un carattere vettoriale. 326 00:19:24,750 --> 00:19:28,470 Così posso indice attraverso ciascuna di queste colonne 327 00:19:28,470 --> 00:19:30,930 e poi vado a prendere i valori stessi. 328 00:19:30,930 --> 00:19:34,370 E si può anche fare una sorta di operazioni sui frame di dati. 329 00:19:34,370 --> 00:19:38,040 E la maggior parte del tempo in cui si è fare l'analisi dei dati o una sorta 330 00:19:38,040 --> 00:19:42,042 di pre-elaborazione, sarete lavorare con queste strutture di dati 331 00:19:42,042 --> 00:19:44,250 in cui ogni colonna sta essere di tipo diverso. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Infine, quindi queste sono essenzialmente solo i quattro oggetti essenziali List R. 334 00:19:52,970 --> 00:19:55,820 sarà solo raccogliere qualsiasi altri oggetti che si desidera. 335 00:19:55,820 --> 00:20:00,130 Così memorizzerà questo in uno variabile che si può facilmente accedere. 336 00:20:00,130 --> 00:20:02,370 >> Così qui, mi sto prendendo una lista. 337 00:20:02,370 --> 00:20:04,460 Sto dicendo cose uguale a 3. 338 00:20:04,460 --> 00:20:08,060 Quindi ho intenzione di avere un elemento in la lista, e questo si chiama roba, 339 00:20:08,060 --> 00:20:10,570 e sta andando ad avere il valore 3. 340 00:20:10,570 --> 00:20:13,140 >> Posso anche creare una matrice. 341 00:20:13,140 --> 00:20:17,970 Quindi questo è da 1 a 4 e riga end 2 è uguale, in modo da 2 a 2 matrice. 342 00:20:17,970 --> 00:20:20,270 Anche nella lista e si chiama mat. 343 00:20:20,270 --> 00:20:24,690 moreStuff, una stringa di caratteri, e anche un altro elenco di per sé. 344 00:20:24,690 --> 00:20:27,710 >> Quindi questa è una lista che è 5 e orso. 345 00:20:27,710 --> 00:20:30,990 Così ha il valore 5 e ha l'orso stringa di caratteri 346 00:20:30,990 --> 00:20:32,710 ed è una lista all'interno di una lista. 347 00:20:32,710 --> 00:20:35,965 Così si può avere questi cose ricorsive dove 348 00:20:35,965 --> 00:20:38,230 avete un another-- digitare all'interno del tipo. 349 00:20:38,230 --> 00:20:41,420 Così allo stesso modo, si può avere una matrice dentro un'altra matrice e così via. 350 00:20:41,420 --> 00:20:44,264 E l'elenco è solo un buon modo di raccolta e aggregazione 351 00:20:44,264 --> 00:20:45,430 tutti questi diversi oggetti. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> E, infine, ecco è solo aiutare in caso Questo era solo andato molto rapidamente. 354 00:20:57,150 --> 00:21:01,350 Così ogni volta che sei confuso su una qualche funzione, 355 00:21:01,350 --> 00:21:03,510 si può fare l'aiuto di quella funzione. 356 00:21:03,510 --> 00:21:07,120 Così si può fare a matrice aiuto o una matrice punto interrogativo. 357 00:21:07,120 --> 00:21:11,430 E l'aiuto e il punto interrogativo sono solo una scorciatoia per la stessa cosa 358 00:21:11,430 --> 00:21:13,040 quindi sono alias. 359 00:21:13,040 --> 00:21:16,820 >> lm è una funzione che appena fa un modello lineare. 360 00:21:16,820 --> 00:21:20,340 Ma se solo avete idea di come tale opere, si può solo fare l'aiuto di lm 361 00:21:20,340 --> 00:21:24,610 e che ti do un po ' tipo di documentazione 362 00:21:24,610 --> 00:21:27,960 Sembra un po 'come un pagina di manuale in Unix, dove 363 00:21:27,960 --> 00:21:34,210 avete una breve descrizione di ciò che lo fa, anche quali sono i suoi argomenti sono, 364 00:21:34,210 --> 00:21:38,850 quello che ritorna, e solo consigli su come usarlo, ed alcuni esempi pure. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Così mi permetta di andare avanti e spettacolo alcuni demo di usare R. OK. 367 00:21:52,890 --> 00:21:55,470 Così sono andato molto rapidamente solo i dati 368 00:21:55,470 --> 00:21:59,440 strutture e una sorta di op-- alcune delle operazioni. 369 00:21:59,440 --> 00:22:02,960 Ecco alcune funzioni. 370 00:22:02,960 --> 00:22:06,750 >> Così qui sto solo andando per definire una funzione. 371 00:22:06,750 --> 00:22:09,970 Così sto usando anche operatore di assegnazione qui, 372 00:22:09,970 --> 00:22:12,610 e poi io sto dicendo dichiareremo come funzione. 373 00:22:12,610 --> 00:22:14,140 E ci vuole il valore x. 374 00:22:14,140 --> 00:22:18,210 Quindi questo è un valore che si desidera e ho intenzione di tornare x se stesso. 375 00:22:18,210 --> 00:22:20,840 Quindi questa è la funzione identità. 376 00:22:20,840 --> 00:22:23,670 >> E ciò che è interessante di questo rispetto ad altre lingue 377 00:22:23,670 --> 00:22:26,330 e un altro di basso livello lingue è che x 378 00:22:26,330 --> 00:22:29,350 possono essere di qualsiasi tipo per sé e tornerà quel tipo. 379 00:22:29,350 --> 00:22:35,251 Così si può imagine-- quindi cerchiamo me solo correre in fretta. 380 00:22:35,251 --> 00:22:35,750 Scusi. 381 00:22:35,750 --> 00:22:40,300 >> Così una cosa che vorrei anche ricordare è che questo editor sto usando 382 00:22:40,300 --> 00:22:41,380 si chiama rstudio. 383 00:22:41,380 --> 00:22:44,389 Questo è ciò che si chiama un IDE. 384 00:22:44,389 --> 00:22:46,180 E una cosa che è veramente bella di questo 385 00:22:46,180 --> 00:22:51,500 è che incorpora un sacco di cose che vogliono fare in R da solo 386 00:22:51,500 --> 00:22:53,180 solo molto intuitivo. 387 00:22:53,180 --> 00:22:55,550 >> Così qui è una console interprete. 388 00:22:55,550 --> 00:23:02,160 Così allo stesso modo, è anche possibile ottenere questo prima console solo facendo un R. capitale 389 00:23:02,160 --> 00:23:05,630 E questo è esattamente stessa cosa come la console. 390 00:23:05,630 --> 00:23:12,210 Quindi posso solo fare la funzione id x, x, x. 391 00:23:12,210 --> 00:23:16,130 E then-- e poi che andrà bene se stesso. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Così rstudio è grande perché ha la console. 394 00:23:21,740 --> 00:23:25,360 Ha anche i documenti vuoi girare su. 395 00:23:25,360 --> 00:23:28,629 E poi ha alcune variabili che si può vedere in ambienti. 396 00:23:28,629 --> 00:23:30,420 E allora, se avete fare trame, allora 397 00:23:30,420 --> 00:23:33,730 può solo vedere qui, a differenza la gestione di tutte queste diverse finestre 398 00:23:33,730 --> 00:23:35,940 da soli. 399 00:23:35,940 --> 00:23:40,530 >> Io in realtà personalmente uso Vim, ma io sentire come rstudio è eccellente solo 400 00:23:40,530 --> 00:23:44,640 per ottenere una buona idea di come utilizzare R. Solitamente, 401 00:23:44,640 --> 00:23:47,040 quando si sta cercando di imparare qualche nuova attività, 402 00:23:47,040 --> 00:23:49,590 non si desidera gestire troppe cose in una volta. 403 00:23:49,590 --> 00:23:53,120 Quindi R è solo un rstudio very-- è un ottimo modo per imparare R 404 00:23:53,120 --> 00:23:56,760 senza dover affrontare tutte queste altre cose. 405 00:23:56,760 --> 00:23:58,600 >> Così qui sto correndo id ciao. 406 00:23:58,600 --> 00:24:00,090 Questo restituisce ciao. 407 00:24:00,090 --> 00:24:01,740 id 123. 408 00:24:01,740 --> 00:24:04,610 Ecco un vettore di numeri interi. 409 00:24:04,610 --> 00:24:08,620 Così allo stesso modo, perché si può prendere qualsiasi sorta di valore, 410 00:24:08,620 --> 00:24:16,060 si può fare ritorno id x quindi restituisce 1234 e 5. 411 00:24:16,060 --> 00:24:22,210 >> E lasciatemi solo mostrarti che questo è effettivamente un numero intero. 412 00:24:22,210 --> 00:24:28,800 E allo stesso modo, se si fa di classe id x, che sta per essere un numero intero. 413 00:24:28,800 --> 00:24:34,170 E poi, si può anche confrontare i due ed è vero. 414 00:24:34,170 --> 00:24:38,350 Così sto controllando se id di x Uguale uguale x e comunicazione 415 00:24:38,350 --> 00:24:39,760 che ti dà due Trues. 416 00:24:39,760 --> 00:24:44,280 Quindi questo non sta dicendo sono i due oggetti identici, 417 00:24:44,280 --> 00:24:46,845 ma sono ognuna delle voci nei vettori identici. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Ecco bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Quindi questo è un po 'più complicato dal fatto che presenta una condizione if e else 421 00:24:58,470 --> 00:25:00,960 e poi bisogna essere in due argomenti alla volta. 422 00:25:00,960 --> 00:25:02,640 Quindi x è di qualsiasi tipo. 423 00:25:02,640 --> 00:25:06,280 E dico questo secondo argomento è una. 424 00:25:06,280 --> 00:25:08,380 Questo può essere qualsiasi cosa pure. 425 00:25:08,380 --> 00:25:12,490 Ma per impostazione predefinita, è andare a prendere 5 se non si specifica nulla. 426 00:25:12,490 --> 00:25:16,730 >> Così qui ho intenzione di dire se x è maggiore di a. 427 00:25:16,730 --> 00:25:19,220 Quindi, se non si specifica una, essa dice se x è maggiore di 5, 428 00:25:19,220 --> 00:25:20,470 poi ho intenzione di tornare TRUE. 429 00:25:20,470 --> 00:25:23,230 altro, ho intenzione di tornare FALSE. 430 00:25:23,230 --> 00:25:24,870 Così mi permetta di andare avanti e definire questo. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> E ora ho intenzione di eseguire bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Così si dice è 3 meno than-- è 3 superiore a 5. 434 00:25:39,150 --> 00:25:41,830 No, non è così FALSE. 435 00:25:41,830 --> 00:25:46,550 >> E bounded.compare 3 e ho intenzione a confrontarlo con un uguale 2. 436 00:25:46,550 --> 00:25:50,700 Così ora sto dicendo di sì, ora mi vogliono una di essere qualcos'altro. 437 00:25:50,700 --> 00:25:52,750 Quindi ho intenzione di dire, si dovrebbe essere 2. 438 00:25:52,750 --> 00:25:56,640 >> Posso sia fare questo tipo di Notazione o dico una uguale 2. 439 00:25:56,640 --> 00:25:58,720 Questo è più leggibile in che quando sei 440 00:25:58,720 --> 00:26:01,450 guardando questi davvero funzioni complesse che 441 00:26:01,450 --> 00:26:08,110 prendere arguments-- multipla e questo può essere decine oftentimes-- solo dicendo 442 00:26:08,110 --> 00:26:11,140 A è uguale a 2 è più leggibile per voi in modo che più avanti nel futuro 443 00:26:11,140 --> 00:26:13,020 si sa che cosa si sta facendo. 444 00:26:13,020 --> 00:26:17,120 >> Quindi, in questo caso, sono detto è 3 superiore a 2. 445 00:26:17,120 --> 00:26:18,270 Sì. 446 00:26:18,270 --> 00:26:22,350 E allo stesso modo, posso solo rimuovere questo e dire, è maggiore di 3 2 447 00:26:22,350 --> 00:26:23,440 dove a è uguale 2. 448 00:26:23,440 --> 00:26:26,230 E questo è anche vero. 449 00:26:26,230 --> 00:26:26,730 Sì? 450 00:26:26,730 --> 00:26:29,670 >> AUDIENCE: Sei esecuzione riga per riga? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN TRAN: Sì sono. 452 00:26:30,670 --> 00:26:33,900 Quindi quello che sto facendo qui è l'assunzione di questo testo document-- 453 00:26:33,900 --> 00:26:39,825 e ciò che è grande circa rstudio è che Posso solo eseguire un short-- un tasto di scelta rapida. 454 00:26:39,825 --> 00:26:41,820 Così sto facendo Control-Invio. 455 00:26:41,820 --> 00:26:44,850 >> E poi, io sto prendendo il riga nel documento di testo 456 00:26:44,850 --> 00:26:46,710 e poi mettere nella console. 457 00:26:46,710 --> 00:26:50,800 Così qui sto dicendo, bounded.compare e sto facendo Control-X. 458 00:26:50,800 --> 00:26:52,540 Quindi posso solo fare funzionare anche qui. 459 00:26:52,540 --> 00:26:54,920 E allora che prendo la line e poi mettere qui. 460 00:26:54,920 --> 00:26:57,900 E poi allo stesso modo, posso fare funzionare qui. 461 00:26:57,900 --> 00:27:04,630 E allora sarà solo continuare definizione le linee nella console del genere. 462 00:27:04,630 --> 00:27:10,690 >> E se si nota anche il riccio bretelle ci sono proprio come nella sintassi C. 463 00:27:10,690 --> 00:27:13,910 x-- se la se la condizione è anche intenzione di usare le parentesi e poi 464 00:27:13,910 --> 00:27:15,350 è possibile utilizzare altro. 465 00:27:15,350 --> 00:27:17,496 Un altro è else if. 466 00:27:17,496 --> 00:27:21,440 Quindi questo sarà x uguale uguale a, per esempio. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 E poi ho intenzione di restituire qualcosa qui. 469 00:27:26,350 --> 00:27:29,490 >> Si noti che ci sono due diversi cose qui che sta succedendo. 470 00:27:29,490 --> 00:27:34,360 Uno è che qui sto specificando restituire il valore TRUE. 471 00:27:34,360 --> 00:27:35,950 Qui sto solo dicendo x. 472 00:27:35,950 --> 00:27:39,970 Così R di solito di default prendere l'ultima arguments-- 473 00:27:39,970 --> 00:27:43,510 o prendere l'ultima riga del codice, e che sarà quello che è tornato. 474 00:27:43,510 --> 00:27:46,920 Ecco questo è lo stesso cosa fare ritorno x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> E proprio per mostrarvi. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 E allora, funzionerà così. 479 00:27:57,052 --> 00:27:58,260 Quindi lasciatemi continuare con questo. 480 00:27:58,260 --> 00:28:00,630 >> Quindi else if. 481 00:28:00,630 --> 00:28:04,060 E davvero, posso tornare niente mi piacerebbe. 482 00:28:04,060 --> 00:28:06,680 Quindi non hanno nemmeno bisogno di ritorno booleani tutto il tempo, 483 00:28:06,680 --> 00:28:08,410 Posso solo tornare qualcosa di diverso. 484 00:28:08,410 --> 00:28:10,670 Così posso fare ritorno dell'orso. 485 00:28:10,670 --> 00:28:12,989 >> Quindi, se x è uguale uguale a, sta andando a tornare orso. 486 00:28:12,989 --> 00:28:14,530 In caso contrario, si sta andando a tornare TRUE. 487 00:28:14,530 --> 00:28:19,310 Posso anche fare un vettore o davvero nulla. 488 00:28:19,310 --> 00:28:22,210 >> E normalmente in modo statico lingue digitato, 489 00:28:22,210 --> 00:28:23,840 dovresti specificare un tipo qui. 490 00:28:23,840 --> 00:28:25,750 E notate che può solo essere qualsiasi cosa. 491 00:28:25,750 --> 00:28:32,400 E R è abbastanza intelligente che sarà solo fare questo e funzionerà benissimo. 492 00:28:32,400 --> 00:28:33,620 >> Così mi permetta di definire questo. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh scusate. 495 00:28:41,230 --> 00:28:44,336 Dovrebbe essere una parentesi graffa qui. 496 00:28:44,336 --> 00:28:44,836 OK. 497 00:28:44,836 --> 00:28:45,336 Freddo. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Bene. 500 00:28:54,530 --> 00:28:58,250 Così ora confrontiamo 3 e uguale a 3. 501 00:28:58,250 --> 00:29:01,860 Così dovrebbe return-- yeah-- il valore orso. 502 00:29:01,860 --> 00:29:06,740 >> Così ora una cosa più generale è come che dire di altre strutture di dati. 503 00:29:06,740 --> 00:29:09,110 In modo da avere questa funzione. 504 00:29:09,110 --> 00:29:15,360 Si tratta di andare a lavorare su qualsiasi tipo di valore come 3 o numerico, 505 00:29:15,360 --> 00:29:17,500 in altre parole, doppio. 506 00:29:17,500 --> 00:29:19,330 >> Ma che dire qualcosa di simile a un vettore. 507 00:29:19,330 --> 00:29:27,750 Che cosa succede se si fare-- quindi sono andare per assegnare val, per esempio, da 4 a 6. 508 00:29:27,750 --> 00:29:31,640 Quindi, se torno questo, questo è un vettore di 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Ora vediamo cosa succede se faccio bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Quindi questo sta per darvi 15 1251. 512 00:29:42,450 --> 00:29:46,440 In altre parole, è dire se si guarda a questa condizione 513 00:29:46,440 --> 00:29:50,040 così si dice x è meno di una o qualcosa. 514 00:29:50,040 --> 00:29:51,880 Quindi questo è un po ' confusione perché ora 515 00:29:51,880 --> 00:29:53,379 tu non sai cosa sta succedendo. 516 00:29:53,379 --> 00:29:58,690 Quindi credo che una cosa che è veramente bene solo cercando di eseguire il debug 517 00:29:58,690 --> 00:30:04,600 è che si può solo fare val è maggiore di un e vedere cosa succede lì. 518 00:30:04,600 --> 00:30:09,720 >> Così val-- a è di default 5 così diciamo solo Do Val superiore a 5. 519 00:30:09,720 --> 00:30:14,280 Quindi questo è un vettore FALSE FALSE TRUE. 520 00:30:14,280 --> 00:30:17,206 Così ora quando stai guardando questo, sta andando a dire se, 521 00:30:17,206 --> 00:30:20,080 e poi sta andando a darvi questa è un vettore di FALSE FALSE TRUE. 522 00:30:20,080 --> 00:30:23,450 >> Così, quando si passa questo in R, R non ha idea di quello che stai facendo. 523 00:30:23,450 --> 00:30:26,650 Perché aspetta un unico valore, che è un booleano, e ora 524 00:30:26,650 --> 00:30:29,420 si sta dando un vettore di valori booleani. 525 00:30:29,420 --> 00:30:31,970 Quindi per default, R è solo per dire che diamine, 526 00:30:31,970 --> 00:30:35,440 Ho intenzione di assumere che sei andando a prendere il primo elemento qui. 527 00:30:35,440 --> 00:30:38,320 Quindi ho intenzione di say-- vado supporre che questo è FALSE. 528 00:30:38,320 --> 00:30:40,890 Così sta andando a dire no, questo non è giusto. 529 00:30:40,890 --> 00:30:45,246 >> Allo stesso modo, sta andando a essere val è uguale uguale a. 530 00:30:45,246 --> 00:30:47,244 No, mi dispiace 5. 531 00:30:47,244 --> 00:30:48,910 Ed è anche andando essere falsa pure. 532 00:30:48,910 --> 00:30:52,410 Così sta andando a dire di no, Non è vero e quindi è 533 00:30:52,410 --> 00:30:53,680 andando a restituire questo ultimo. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Quindi questa è sia una cosa buona o cattiva cosa, a seconda di come lo si visualizza. 536 00:31:01,360 --> 00:31:05,104 Perché quando sei la creazione di queste funzioni, 537 00:31:05,104 --> 00:31:06,770 in realtà non sa cosa sta succedendo. 538 00:31:06,770 --> 00:31:10,210 Così a volte si vorrebbe un errore, o forse si desidera solo un avvertimento. 539 00:31:10,210 --> 00:31:12,160 In questo caso, R non lo fa. 540 00:31:12,160 --> 00:31:14,300 Quindi è davvero fino a base di fuori di ciò che 541 00:31:14,300 --> 00:31:17,310 pensate che la lingua dovrebbe fare in questo caso 542 00:31:17,310 --> 00:31:22,920 se si passa in un vettore di valori booleani quando si sta facendo una condizione if. 543 00:31:22,920 --> 00:31:31,733 >> Quindi cerchiamo di dire che hai avuto l'originale uno con se altro ritorno TRUE e sei 544 00:31:31,733 --> 00:31:34,190 andando a ritorno FALSE. 545 00:31:34,190 --> 00:31:39,300 Quindi un modo di astrazione questo per dire che 546 00:31:39,300 --> 00:31:41,530 non hanno nemmeno bisogno di questa cosa condizionale. 547 00:31:41,530 --> 00:31:47,220 Un'altra cosa che posso fare è solo restituendo i valori stessi. 548 00:31:47,220 --> 00:31:53,240 Quindi, se si nota, se si do val è maggiore di 5, 549 00:31:53,240 --> 00:31:56,350 questo sta per restituire un vector FALSE FALSE TRUE. 550 00:31:56,350 --> 00:31:58,850 >> Forse questo è ciò che si desiderare per bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Si desidera restituire un vettore di valori booleani dove confronta ciascun valore 552 00:32:02,940 --> 00:32:04,190 a se stessi. 553 00:32:04,190 --> 00:32:11,165 Così si può solo fare bounded.compare funzione di x, un uguale 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 E poi invece di fare questo se altro stato, 556 00:32:15,363 --> 00:32:21,430 Sto solo andando a tornare x è maggiore di 5. 557 00:32:21,430 --> 00:32:23,620 Quindi, se è vero, allora sta andando a tornare TRUE. 558 00:32:23,620 --> 00:32:26,830 E poi se non lo è, è andando a ritorno FALSE. 559 00:32:26,830 --> 00:32:30,880 >> E questo lavoro per qualsiasi di queste strutture. 560 00:32:30,880 --> 00:32:41,450 Così posso bounded.compare c 1 6 o 9 e poi ho intenzione di dire a è uguale 6, 561 00:32:41,450 --> 00:32:42,799 per esempio. 562 00:32:42,799 --> 00:32:44,840 E poi sta andando a dare il giusto booleano 563 00:32:44,840 --> 00:32:48,240 vettore che si sta progettando. 564 00:32:48,240 --> 00:32:50,660 >> Quindi questi sono solo funzioni e ora lasciatemi 565 00:32:50,660 --> 00:32:54,980 mostrarvi alcune immagini interattive. 566 00:32:54,980 --> 00:32:59,700 Non credo che in realtà sono Wi-Fi qui così lasciatemi andare avanti 567 00:32:59,700 --> 00:33:01,970 e saltare questo credo. 568 00:33:01,970 --> 00:33:05,260 >> Ma una cosa che è cool però è che se si 569 00:33:05,260 --> 00:33:09,600 voler testare un gruppo di comandi di dati diversi, 570 00:33:09,600 --> 00:33:13,320 vi è un gruppo di diverse serie di dati che sono già precaricati in R. 571 00:33:13,320 --> 00:33:15,770 Quindi uno di loro è chiamato iris dataset. 572 00:33:15,770 --> 00:33:18,910 Questo è uno dei più noti quelli di apprendimento automatico. 573 00:33:18,910 --> 00:33:23,350 Potrai solito solo fare una sorta di casi di test per vedere se il codice viene eseguito. 574 00:33:23,350 --> 00:33:27,520 Così facciamo solo controllare quello dell'iride è. 575 00:33:27,520 --> 00:33:33,130 >> Quindi questa cosa sta andando essere un frame di dati. 576 00:33:33,130 --> 00:33:36,000 Ed è una specie di lungo perché Ho appena stampato fuori iris. 577 00:33:36,000 --> 00:33:38,810 E 'stampare l'intera cosa. 578 00:33:38,810 --> 00:33:42,830 Così ha tutti questi diversi nomi. 579 00:33:42,830 --> 00:33:45,505 Quindi iride è una raccolta di fiori diversi. 580 00:33:45,505 --> 00:33:48,830 In questo caso, si sta dicendo si le specie di esso, 581 00:33:48,830 --> 00:33:54,760 tutte queste diverse larghezze e lunghezze del sepalo e il petalo. 582 00:33:54,760 --> 00:33:58,880 >> E così normalmente, se si desidera stampare iris, 583 00:33:58,880 --> 00:34:03,680 per esempio, non si vuole avere fare tutto questo perché che può subentrare 584 00:34:03,680 --> 00:34:05,190 l'intera console. 585 00:34:05,190 --> 00:34:09,280 Così una cosa che è veramente bella è la funzione testa. 586 00:34:09,280 --> 00:34:12,929 Quindi, se lo farete testa iris, questo vi darà 587 00:34:12,929 --> 00:34:17,389 le prime cinque righe, o sei immagino. 588 00:34:17,389 --> 00:34:19,909 E allora bene voi, può solo indicare qui. 589 00:34:19,909 --> 00:34:22,914 Quindi 20-- questo darà i primi 20 righe. 590 00:34:22,914 --> 00:34:24,830 E io in realtà ero tipo di sorpreso che questo 591 00:34:24,830 --> 00:34:28,770 mi ha dato sei così mi permetta di andare avanti e verificare iris-- o la testa, mi dispiace. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 E qui darà la documentazione 594 00:34:34,960 --> 00:34:37,960 di ciò che fa il capo valore. 595 00:34:37,960 --> 00:34:40,839 Così restituisce la prima o l'ultima di un oggetto. 596 00:34:40,839 --> 00:34:42,630 E poi ho intenzione di guardare le impostazioni predefinite. 597 00:34:42,630 --> 00:34:47,340 E poi si dice che il default Metodo di testa x e n uguale 6L. 598 00:34:47,340 --> 00:34:50,620 Così questa restituisce i primi sei elementi. 599 00:34:50,620 --> 00:34:55,050 E allo stesso modo se si nota qui, non ha dovuto specificare n uguale 6. 600 00:34:55,050 --> 00:34:56,840 Di default usa sei, immagino. 601 00:34:56,840 --> 00:35:00,130 E poi, se voglio specificare un determinato valore, allora posso vedere quello. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Quindi è alcuni comandi semplici e eccone un altro che è solo-- bene, 604 00:35:10,592 --> 00:35:12,550 I can-- questo è in realtà un po 'più complesso, 605 00:35:12,550 --> 00:35:17,130 ma questo sarà solo prendere la classe di ogni colonna del set di dati dell'iride. 606 00:35:17,130 --> 00:35:20,910 Quindi questo vi mostrerà che cosa ciascuno di questi colonne sono in termini di tipi. 607 00:35:20,910 --> 00:35:23,665 Quindi la lunghezza sepalo è numerico, larghezza sepalo è numerico. 608 00:35:23,665 --> 00:35:26,540 Tutti questi valori sono solo numerico perché si può dire da questi dati 609 00:35:26,540 --> 00:35:29,440 strutturano queste sono tutti di andare a numerico. 610 00:35:29,440 --> 00:35:34,310 >> E la colonna di Species sta per essere un fattore. 611 00:35:34,310 --> 00:35:37,270 Così di solito, si potrebbe pensare che questo è come una stringa di caratteri. 612 00:35:37,270 --> 00:35:48,830 Ma se lo farete irisSpecies, e poi ho intenzione di fare capo 5, 613 00:35:48,830 --> 00:35:51,820 e questo sta per stampare i primi cinque valori. 614 00:35:51,820 --> 00:35:54,150 >> E poi notare questo livello. 615 00:35:54,150 --> 00:35:58,870 Quindi questo è saying-- questo è il modo di R di avere variabili categoriali. 616 00:35:58,870 --> 00:36:03,765 Così, invece di avendo stringhe di caratteri, 617 00:36:03,765 --> 00:36:06,740 ha livelli specificando che di queste cose sono. 618 00:36:06,740 --> 00:36:12,450 >> Quindi diciamo irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Quindi, che cosa si vuole fare qui è che sono sottoinsiemi di questa colonna Species. 620 00:36:17,690 --> 00:36:21,480 Quindi questo prende il Colonna Specie e poi 621 00:36:21,480 --> 00:36:23,820 indici per ottenere il primo elemento. 622 00:36:23,820 --> 00:36:27,140 Quindi questo dovrebbe darvi setosa. 623 00:36:27,140 --> 00:36:28,710 E ti dà anche i livelli di qui. 624 00:36:28,710 --> 00:36:32,812 >> Così si può confrontare anche questo per la setosa carattere 625 00:36:32,812 --> 00:36:34,645 e questo non va per essere vero perché uno 626 00:36:34,645 --> 00:36:37,940 è di tipo diverso rispetto agli altri. 627 00:36:37,940 --> 00:36:40,590 O Credo che sia vero perché R è più intelligente di quello. 628 00:36:40,590 --> 00:36:45,420 E sembra a questo e poi dice, forse questo è ciò che si desidera. 629 00:36:45,420 --> 00:36:51,860 Così sta andando a dire il carattere stringa setosa è la stessa di questa. 630 00:36:51,860 --> 00:37:01,290 E poi allo stesso modo, è possibile anche solo afferrare questi come così via. 631 00:37:01,290 --> 00:37:05,580 >> In modo che è solo una sorta di comandi rapidi del dataset. 632 00:37:05,580 --> 00:37:08,030 Quindi, ecco un po 'di esplorazione dei dati. 633 00:37:08,030 --> 00:37:11,360 Quindi questo è un po 'più coinvolto con l'analisi dei dati. 634 00:37:11,360 --> 00:37:18,340 E questo è preso da qualche bootcamp in R per a Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Così biblioteca straniera. 636 00:37:20,790 --> 00:37:24,880 Quindi ho intenzione di caricare in un libreria che si chiama straniera. 637 00:37:24,880 --> 00:37:32,460 Quindi questo sta per darmi read.dta così supporre che ho questo set di dati. 638 00:37:32,460 --> 00:37:39,000 Questo è memorizzato nella corrente directory della mia console lavorare. 639 00:37:39,000 --> 00:37:42,190 Così facciamo solo vedere cosa la directory di lavoro è. 640 00:37:42,190 --> 00:37:44,620 >> Quindi, ecco la mia directory di lavoro. 641 00:37:44,620 --> 00:37:50,040 E la lettura dei dati di punti, questo cosa, sta dicendo questo file 642 00:37:50,040 --> 00:37:54,650 si trova nella cartella dei dati di questa directory di lavoro corrente. 643 00:37:54,650 --> 00:38:00,520 E questo non è read.dta un comando predefinito. 644 00:38:00,520 --> 00:38:02,760 Credo che ho caricato in già. 645 00:38:02,760 --> 00:38:04,750 IEI assunto ho caricato questo già. 646 00:38:04,750 --> 00:38:08,115 >> Ma così read.dta non sta andando ad essere un comando predefinito. 647 00:38:08,115 --> 00:38:11,550 Ed è per questo che si sta andando ad avere per caricare in questa biblioteca package-- 648 00:38:11,550 --> 00:38:14,500 questo pacchetto chiamato straniera. 649 00:38:14,500 --> 00:38:16,690 E se non hai il pacchetto, penso 650 00:38:16,690 --> 00:38:19,180 straniero è uno di quelli incorporati. 651 00:38:19,180 --> 00:38:31,150 In caso contrario, si può anche fare install.packages 652 00:38:31,150 --> 00:38:33,180 e questo installare il pacchetto. 653 00:38:33,180 --> 00:38:36,878 E questo vi darà R. Uh, no. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 E poi io sono solo intenzione di smettere questo perché l'ho già. 656 00:38:43,140 --> 00:38:46,920 >> Ma ciò che è veramente bella di R è che la gestione dei pacchetti 657 00:38:46,920 --> 00:38:48,510 sistema è molto elegante. 658 00:38:48,510 --> 00:38:52,470 Perché sarà memorizzare tutto davvero ben per voi. 659 00:38:52,470 --> 00:38:59,780 Quindi in questo caso, sta andando a memorizzare in, credo, questa biblioteca qui. 660 00:38:59,780 --> 00:39:02,390 >> Così ogni volta che si desidera installare nuovi pacchetti, 661 00:39:02,390 --> 00:39:04,980 è altrettanto semplice come facendo install.packages 662 00:39:04,980 --> 00:39:07,500 e R gestirà tutto i pacchetti per voi. 663 00:39:07,500 --> 00:39:12,900 Quindi non c'è bisogno di fare qualcosa in Python, dove si ha il pacchetto esterni 664 00:39:12,900 --> 00:39:15,330 manager come carta Anaconda dove sei 665 00:39:15,330 --> 00:39:18,310 doing-- si installa pacchetti al di fuori di Python 666 00:39:18,310 --> 00:39:20,940 e poi si tenta di eseguire da soli. 667 00:39:20,940 --> 00:39:22,210 Quindi questo è davvero così bello. 668 00:39:22,210 --> 00:39:25,590 >> E install.packages richiede Internet. 669 00:39:25,590 --> 00:39:31,950 Si prende da un server e il repository che 670 00:39:31,950 --> 00:39:33,960 raccoglie tutto il pacchetti si chiama CRAN. 671 00:39:33,960 --> 00:39:40,690 E si può specificare quale tipo di mirror volete scaricare i pacchetti. 672 00:39:40,690 --> 00:39:43,420 >> Così qui sto prendendo questo dataset. 673 00:39:43,420 --> 00:39:46,240 Sto leggendo in utilizzare questa funzione. 674 00:39:46,240 --> 00:39:49,360 Così mi permetta di andare avanti e farlo. 675 00:39:49,360 --> 00:39:52,900 >> Quindi supponiamo che avete questo dataset 676 00:39:52,900 --> 00:39:55,550 e avete assolutamente nessuna idea di cosa sia. 677 00:39:55,550 --> 00:39:58,560 E questo in realtà si avvicina abbastanza spesso nell'industria 678 00:39:58,560 --> 00:40:00,910 dove avete appena questi tonnellate e tonnellate di cose disordinato 679 00:40:00,910 --> 00:40:02,890 e sono incredibilmente senza etichetta. 680 00:40:02,890 --> 00:40:06,380 Così qui ho questo dataset e non so 681 00:40:06,380 --> 00:40:08,400 che cosa è così io sono solo mostrando di check it out. 682 00:40:08,400 --> 00:40:10,620 >> Quindi ho intenzione di fare a capofitto. 683 00:40:10,620 --> 00:40:14,190 Così posso controllare i primi sei colonne di ciò che questo insieme di dati è. 684 00:40:14,190 --> 00:40:21,730 Quindi questo è stato, pres04, e poi Tutte queste diverse specie di colonne. 685 00:40:21,730 --> 00:40:25,612 E cosa c'è di interessante qui, credo, è che si 686 00:40:25,612 --> 00:40:27,945 potrebbe supporre che questo sembra come una sorta di elezione. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 E credo che proprio da guardando il file 689 00:40:32,190 --> 00:40:41,070 chiamare questo è una sorta di collezione dei dati relativi candidati o elettori 690 00:40:41,070 --> 00:40:44,920 che hanno votato per i presidenti specifici o candidati alla presidenza 691 00:40:44,920 --> 00:40:46,550 per le elezioni del 2004. 692 00:40:46,550 --> 00:40:52,920 >> Così qui è i valori 1, 2 così un modo di memorizzazione 693 00:40:52,920 --> 00:40:56,540 i candidati alla presidenza sono i loro nomi. 694 00:40:56,540 --> 00:40:59,780 In questo caso, sembra sono valori appena interi. 695 00:40:59,780 --> 00:41:04,030 Così 2004 era Bush contro Kerry credo. 696 00:41:04,030 --> 00:41:09,010 E ora, diciamo che non sai se 1 corrisponde al Bush o 2 697 00:41:09,010 --> 00:41:11,703 corrisponde a Kerry o e così via e così via, giusto? 698 00:41:11,703 --> 00:41:15,860 >> E questo è, solo a me, un problema abbastanza comune. 699 00:41:15,860 --> 00:41:18,230 Che cosa si può fare in questo caso? 700 00:41:18,230 --> 00:41:20,000 Quindi cerchiamo di controllare tutte queste altre cose. 701 00:41:20,000 --> 00:41:22,790 >> Stato, sto assumendo questo proviene da diversi stati. 702 00:41:22,790 --> 00:41:25,100 PartyId, reddito. 703 00:41:25,100 --> 00:41:27,710 Diamo un'occhiata a PartyId. 704 00:41:27,710 --> 00:41:32,800 Così forse una cosa che puoi fare è esaminare ciascuna osservazione 705 00:41:32,800 --> 00:41:36,250 che hanno un PartyId di repubblicano o democratico o qualcosa. 706 00:41:36,250 --> 00:41:38,170 Così facciamo solo un'occhiata a ciò che è PartyId. 707 00:41:38,170 --> 00:41:41,946 >> Quindi ho intenzione di prendere dat e poi vado 708 00:41:41,946 --> 00:41:47,960 per fare questo il segno del dollaro operatore che ho fatto in precedenza 709 00:41:47,960 --> 00:41:50,770 e questo sta per sottoinsieme di quella colonna. 710 00:41:50,770 --> 00:41:57,760 E poi ho intenzione di andare in questo 20, solo per vedere che cosa questo assomiglia. 711 00:41:57,760 --> 00:42:00,170 >> Quindi questo è solo un mucchio di AN. 712 00:42:00,170 --> 00:42:02,800 Quindi, in altre parole, si ha dati mancanti di questi ragazzi. 713 00:42:02,800 --> 00:42:08,100 Ma si nota anche questo dat PartyId è un fattore 714 00:42:08,100 --> 00:42:10,030 quindi questo ti dà diverse categorie. 715 00:42:10,030 --> 00:42:14,170 In altre parole, può prendere PartyId Democratico, repubblicano, indipendente, 716 00:42:14,170 --> 00:42:16,640 o qualcos'altro. 717 00:42:16,640 --> 00:42:23,940 >> Quindi andiamo avanti e cerchiamo di vedere quale di questi è-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Quindi ho intenzione di sottoinsieme a PartyId e poi 719 00:42:28,480 --> 00:42:32,780 guardare quali sono Democratico, per esempio. 720 00:42:32,780 --> 00:42:37,150 Questo sta per dare un valore booleano, un enorme booleano di veri e falsi. 721 00:42:37,150 --> 00:42:41,630 >> E ora, diciamo che voglio a sottoinsieme di questi ragazzi. 722 00:42:41,630 --> 00:42:47,260 Quindi si tratta di andare a prendere la mia dat e sottoinsieme a qualsiasi osservazioni 723 00:42:47,260 --> 00:42:48,910 hanno eguali PartyId uguale democratico. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 E questo è abbastanza lungo perché ci sono così tanti di loro. 726 00:42:55,180 --> 00:42:59,060 Così ora, ho intenzione di andare in questa 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> E come si nota, uguale uguale è interessante in che sei 729 00:43:11,270 --> 00:43:13,250 already-- sei anche compreso le AN. 730 00:43:13,250 --> 00:43:19,010 Quindi, in questo caso, non è ancora possibile ottenere qualsiasi informazione perché ora avete AN 731 00:43:19,010 --> 00:43:22,650 e si desidera solo per vedere quale delle osservazione corrisponde a Democrat 732 00:43:22,650 --> 00:43:24,670 e non mancano questi stessi valori. 733 00:43:24,670 --> 00:43:27,680 Così come vi sbarazzarsi di questi AN? 734 00:43:27,680 --> 00:43:36,410 >> Così qui sto solo utilizzando il tasto sul mio cursore e poi dire muoversi. 735 00:43:36,410 --> 00:43:39,778 E poi qui sto solo andando dire is.na datpartyid. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Quindi questo e e prenderà due differenti vettori booleani 738 00:43:52,720 --> 00:43:57,160 e dire che sarà TRUE e FALSE per esempio. 739 00:43:57,160 --> 00:43:59,190 Così sta andando a fare questo componente-saggio. 740 00:43:59,190 --> 00:44:02,910 Così qui sto dicendo take il frame di dati, sottoinsieme 741 00:44:02,910 --> 00:44:10,170 a quelli che corrispondono alla carbossimetilazione, e rimuovere qualcuno di loro che non sono NA. 742 00:44:10,170 --> 00:44:13,540 >> Quindi questo dovrebbe will-- dare qualcosa. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Vediamo is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Proviamo datpartyid is.na. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 E questo dovrebbe dare you-- sorry-- solo un vettore booleano. 749 00:44:45,290 --> 00:44:49,260 E poi, perché è così tanto tempo, Ho intenzione di sottoinsieme di 20. 750 00:44:49,260 --> 00:44:49,760 OK. 751 00:44:49,760 --> 00:44:51,570 Quindi questo dovrebbe funzionare. 752 00:44:51,570 --> 00:44:54,700 >> E questo sarà anche Trues. 753 00:44:54,700 --> 00:45:01,830 Ah, quindi il mio errore è che io io-- usano C ++ e R intercambiabile così faccio 754 00:45:01,830 --> 00:45:03,590 questo errore per tutto il tempo. 755 00:45:03,590 --> 00:45:05,807 L'e operatore in realtà quello che si desidera. 756 00:45:05,807 --> 00:45:08,140 Se non si desidera utilizzare due e commerciali, solo uno solo. 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 >> Quindi vediamo. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Così abbiamo subsetted al PartyId dove sono Democrat 762 00:45:23,920 --> 00:45:25,300 e non si perdono i valori. 763 00:45:25,300 --> 00:45:27,690 E ora diamo un'occhiata a che quelli che hanno votato per. 764 00:45:27,690 --> 00:45:31,530 Così sembra come la maggior parte di essi votato per 1. 765 00:45:31,530 --> 00:45:36,090 Quindi ho intenzione di andare avanti e dire che è Kerry. 766 00:45:36,090 --> 00:45:39,507 >> E allo stesso modo, è possibile anche andare a repubblicano 767 00:45:39,507 --> 00:45:41,090 e, si spera, questo dovrebbe darvi 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 E 'solo un mucchio di diverse colonne. 770 00:45:51,770 --> 00:45:53,070 E in effetti, è 2. 771 00:45:53,070 --> 00:45:55,750 Quindi PartyId tutto repubblicano, la maggior parte di loro votano per 2. 772 00:45:55,750 --> 00:45:58,390 >> Così sembra, basta cercando in questo, 773 00:45:58,390 --> 00:46:00,600 Repubblicano sarà un very-- o PartyId 774 00:46:00,600 --> 00:46:02,790 sta per essere molto grande fattore nel determinare 775 00:46:02,790 --> 00:46:05,420 quale candidato sono andare a votare. 776 00:46:05,420 --> 00:46:07,120 E questo è ovviamente vero in generale. 777 00:46:07,120 --> 00:46:10,139 E questo corrisponde al intuizione, naturalmente. 778 00:46:10,139 --> 00:46:11,930 Così sembra come se fossi a corto di tempo così 779 00:46:11,930 --> 00:46:17,040 lasciatemi dovrei andare avanti e mostrano alcune immagini veloci. 780 00:46:17,040 --> 00:46:21,120 Quindi, ecco qualcosa che sia un po ' più complicata con la visualizzazione. 781 00:46:21,120 --> 00:46:26,450 Quindi, in questo caso, ciò è molto semplice analisi di appena controllare quello 782 00:46:26,450 --> 00:46:28,500 il presidente del '04 è. 783 00:46:28,500 --> 00:46:33,920 >> Quindi, in questo caso, diciamo che ha voluto rispondere a questa domanda. 784 00:46:33,920 --> 00:46:38,540 Quindi supponiamo abbiamo voluto conoscere il voto comportamento nelle elezioni del 2004 presidente 785 00:46:38,540 --> 00:46:41,170 e come che varia da gara. 786 00:46:41,170 --> 00:46:44,380 Quindi non solo vuoi vedere il comportamento di voto, 787 00:46:44,380 --> 00:46:47,860 ma si vuole sottoinsieme di ogni razza e genere di riassumere tale. 788 00:46:47,860 --> 00:46:50,770 E si può dire solo da questa notazione complesso 789 00:46:50,770 --> 00:46:52,580 che questo è una specie di ottenere confuso. 790 00:46:52,580 --> 00:46:56,390 >> Così uno dei più avanzato R pacchetti che è anche sorta di recente 791 00:46:56,390 --> 00:47:00,070 si chiama dplyr. 792 00:47:00,070 --> 00:47:03,060 Quindi è questo qui. 793 00:47:03,060 --> 00:47:08,080 E ggplot2 ggg-- è solo una bella modo di fare visualizzazioni migliori 794 00:47:08,080 --> 00:47:09,400 quello incorporato. 795 00:47:09,400 --> 00:47:11,108 >> Quindi ho intenzione di caricare queste due librerie. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 E poi, ho intenzione di andare avanti ed eseguire il comando. 798 00:47:16,950 --> 00:47:19,050 Si può solo trattare questo come una scatola nera. 799 00:47:19,050 --> 00:47:23,460 >> Quello che sta succedendo è che questo tubo operatore sta passando in questo argomento 800 00:47:23,460 --> 00:47:24,110 in questa sede. 801 00:47:24,110 --> 00:47:28,070 Così sto dicendo gruppo da dat gara e poi presidente 04. 802 00:47:28,070 --> 00:47:31,530 E poi, tutti questi altri comandi filtrando e quindi riassumendo 803 00:47:31,530 --> 00:47:34,081 dove sto facendo il conteggio e allora sto tramando qui. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 OK fresco. 806 00:47:42,500 --> 00:47:44,620 Quindi andiamo avanti e vedere che cosa questo assomiglia. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Quindi, quello che sta accadendo qui è che io appena tracciati ciascuna delle gare e poi 809 00:47:57,290 --> 00:47:59,670 che quelli che hanno votato per. 810 00:47:59,670 --> 00:48:03,492 E questi due diversi valori corrispondono a 2 e 1. 811 00:48:03,492 --> 00:48:05,325 Se si vuole essere più elegante, è anche possibile 812 00:48:05,325 --> 00:48:11,770 Basta specificare che 2 è Kerry-- o 2 è Bush, e poi 1 è Kerry. 813 00:48:11,770 --> 00:48:13,700 E si può anche avere che nella vostra leggenda. 814 00:48:13,700 --> 00:48:17,410 >> E si può anche dividere questi grafici a barre. 815 00:48:17,410 --> 00:48:19,480 Perché una cosa è che, se si nota, 816 00:48:19,480 --> 00:48:24,560 questo non è molto facile da identificare quale di questi due valori sono più grandi. 817 00:48:24,560 --> 00:48:27,920 Così una cosa che ci si vuole fare è prendere questa zona blu 818 00:48:27,920 --> 00:48:31,855 e basta spostare sopra qui in modo da Possiamo confrontare questi due fianco a fianco. 819 00:48:31,855 --> 00:48:34,480 E credo che sia una cosa che non hanno il tempo di fare in questo momento, 820 00:48:34,480 --> 00:48:36,660 ma che è anche molto facile da fare. 821 00:48:36,660 --> 00:48:40,310 Si può solo guardare in le pagine man di ggplot. 822 00:48:40,310 --> 00:48:47,170 Così si può solo fare ggplot come che e leggere in questa pagina man. 823 00:48:47,170 --> 00:48:51,920 >> Quindi lasciatemi rapidamente mostrarvi alcune cose interessanti. 824 00:48:51,920 --> 00:48:57,610 Andiamo avanti e andiamo a-- solo un applicazione di machine learning. 825 00:48:57,610 --> 00:49:02,450 Quindi diciamo che abbiamo questi tre Pacchetti così ho intenzione di caricare questi in. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Quindi questo stampa solo alcuni informazioni dopo ho caricato nella cosa. 828 00:49:09,170 --> 00:49:15,220 Quindi io dico read.csv, questo insieme di dati, e ora 829 00:49:15,220 --> 00:49:18,940 Ho intenzione di andare avanti e guardare e vedere cosa c'è all'interno di questo insieme di dati. 830 00:49:18,940 --> 00:49:22,080 >> Così i primi 20 osservazioni. 831 00:49:22,080 --> 00:49:27,190 Quindi non mi resta che X1, X2, e Y. Quindi sembra un po 'di questi valori 832 00:49:27,190 --> 00:49:31,640 sono forse vanno da 20 a 80 o così. 833 00:49:31,640 --> 00:49:37,700 E poi in modo simile per X2 e poi Y questo sembra essere etichette 0 e 1. 834 00:49:37,700 --> 00:49:49,500 >> Per verificare questo, posso basta fare X1 dati di riepilogo. 835 00:49:49,500 --> 00:49:51,660 E poi in modo simile per tutte queste altre colonne. 836 00:49:51,660 --> 00:49:55,300 Quindi sintesi è un modo rapido di solo mostrando valori veloci. 837 00:49:55,300 --> 00:49:56,330 Oh, mi dispiace. 838 00:49:56,330 --> 00:49:58,440 Questo dovrebbe essere Y. 839 00:49:58,440 --> 00:50:03,420 >> Quindi in questo caso, dà la quantili, mediane, arriva al massimo pure. 840 00:50:03,420 --> 00:50:07,130 In questo caso, Dati Y, si può vedere che è solo andare a essere 0 e 1. 841 00:50:07,130 --> 00:50:10,100 Anche la media sta dicendo 0.6, significa solo che 842 00:50:10,100 --> 00:50:13,380 sembra che ci siano più di 1s 0s. 843 00:50:13,380 --> 00:50:16,160 >> Così mi permetta di andare avanti e spettacolo che cosa questo assomiglia. 844 00:50:16,160 --> 00:50:17,470 Così sto solo andando a tracciare questo. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Vediamo come per cancellare questo. 847 00:50:24,636 --> 00:50:30,492 848 00:50:30,492 --> 00:50:31,468 Oh 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 >> Quindi questo è quello che sembra. 852 00:50:37,590 --> 00:50:46,310 Così sembra gialli I specificato come 0, e poi rosso ho specificato come 1s. 853 00:50:46,310 --> 00:50:52,190 Così qui sembra punti di etichette ed è 854 00:50:52,190 --> 00:50:56,410 sembra si voleva solo un po ' sorta di clustering su questo. 855 00:50:56,410 --> 00:51:01,020 >> E vorrei solo andare avanti e spettacolo alcune di queste funzioni built-in. 856 00:51:01,020 --> 00:51:03,580 Così qui è lm. 857 00:51:03,580 --> 00:51:06,060 Quindi questo è solo cercando per adattare una linea di questo. 858 00:51:06,060 --> 00:51:08,640 Allora, qual è il modo migliore che io possa andare bene una linea simile 859 00:51:08,640 --> 00:51:14,020 che sarà meglio separare questo tipo di clustering. 860 00:51:14,020 --> 00:51:21,790 E idealmente, si può solo vedere che ho appena eseguito tutti questi comandi 861 00:51:21,790 --> 00:51:25,450 e poi, vado avanti e aggiungere la riga. 862 00:51:25,450 --> 00:51:28,970 >> Quindi questo sembra la migliore ipotesi. 863 00:51:28,970 --> 00:51:34,150 E 'prendendo il migliore che minimizza l'errore nel tentativo di soddisfare questa linea. 864 00:51:34,150 --> 00:51:40,000 Ovviamente, questo sembra un po ' buono, ma non è il migliore. 865 00:51:40,000 --> 00:51:43,130 E modelli lineari, in generale, stanno per essere 866 00:51:43,130 --> 00:51:46,811 davvero grande per la teoria e appena sorta dei fondamenti costitutivi della macchina 867 00:51:46,811 --> 00:51:47,310 l'apprendimento. 868 00:51:47,310 --> 00:51:50,330 Ma in pratica, si sta andando a voglia di fare qualcosa di più generale. 869 00:51:50,330 --> 00:51:54,280 >> Così si può solo provare a lanciare qualcosa chiamato una rete neurale. 870 00:51:54,280 --> 00:51:57,110 Queste cose sono sempre più comune. 871 00:51:57,110 --> 00:52:00,530 E solo di lavoro fantastico per grandi insiemi di dati. 872 00:52:00,530 --> 00:52:07,080 Quindi, in questo caso, abbiamo solo have-- diamo see-- abbiamo nrow. 873 00:52:07,080 --> 00:52:09,010 Così nrow sta solo dicendo il numero di righe. 874 00:52:09,010 --> 00:52:11,790 Quindi, in questo caso, avere 100 osservazioni. 875 00:52:11,790 --> 00:52:15,010 >> Così mi permetta di andare avanti e fare una rete neurale. 876 00:52:15,010 --> 00:52:18,620 Quindi questo è veramente bello perché posso solo dire nnet 877 00:52:18,620 --> 00:52:21,767 e poi sto regredendo Y. Quindi la Y è quella colonna. 878 00:52:21,767 --> 00:52:23,850 E poi regredire su le altre due variabili. 879 00:52:23,850 --> 00:52:27,360 Quindi questo è più breve notazione per X1 e X2. 880 00:52:27,360 --> 00:52:29,741 >> Quindi cerchiamo di andare avanti ed eseguire questo. 881 00:52:29,741 --> 00:52:30,240 Oh, mi dispiace. 882 00:52:30,240 --> 00:52:32,260 Ho bisogno di correre questa cosa. 883 00:52:32,260 --> 00:52:37,500 E questa è solo la stampa notazione per quanto velocemente o meno rapidamente 884 00:52:37,500 --> 00:52:38,460 convergente. 885 00:52:38,460 --> 00:52:41,420 Così sembra che si convergono. 886 00:52:41,420 --> 00:52:44,970 Così mi permetta di andare avanti e di stampa che cosa questo assomiglia. 887 00:52:44,970 --> 00:52:51,260 >> Vedi qui è l'immagine e qui è un profilo che mostra quanto bene si adatta. 888 00:52:51,260 --> 00:52:56,380 E questo è solo-- si può vedere ciò che questo è molto, molto bello. 889 00:52:56,380 --> 00:52:59,400 Potrebbe anche essere overfitting, ma è anche possibile 890 00:52:59,400 --> 00:53:03,390 tenere conto di questo con altri tecniche come la convalida incrociata. 891 00:53:03,390 --> 00:53:06,180 E questi sono anche costruiti in R. 892 00:53:06,180 --> 00:53:09,170 >> E lasciatemi solo mostrare sostenere Vector Machine. 893 00:53:09,170 --> 00:53:12,470 Questo è un altro molto comune tecnica in apprendimento automatico. 894 00:53:12,470 --> 00:53:18,550 È molto simile ai modelli lineari, ma usa quello che è chiamato un metodo kernel. 895 00:53:18,550 --> 00:53:22,790 E vediamo quanto bene che fa. 896 00:53:22,790 --> 00:53:26,430 Quindi questo è molto simile a come ben una rete neurale esegue, 897 00:53:26,430 --> 00:53:27,900 ma è molto più agevole. 898 00:53:27,900 --> 00:53:35,740 E questo si basa off di Cosa-- come SVM lavoro. 899 00:53:35,740 --> 00:53:40,250 >> Quindi questo è solo un rapida panoramica di alcuni 900 00:53:40,250 --> 00:53:43,822 delle funzioni built-in che si può fare e anche alcuni dell'esplorazione dati. 901 00:53:43,822 --> 00:53:45,905 Quindi lasciatemi andare avanti e tornare alle diapositive. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Così, ovviamente, questo è Non molto completo. 904 00:53:53,670 --> 00:53:57,140 E questo è davvero solo un teaser vi mostra cosa si può davvero fare a R. 905 00:53:57,140 --> 00:53:59,100 Quindi, se vi piacerebbe solo per saperne di più, qui 906 00:53:59,100 --> 00:54:01,210 sono un sacco di risorse diverse. 907 00:54:01,210 --> 00:54:06,890 >> Quindi, se siete appassionati di libri di testo o sei solo appassionato di lettura cose on-line, 908 00:54:06,890 --> 00:54:09,670 allora questo è un fantastico uno per Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 che ha anche creato tutti questi pacchetti davvero cool. 910 00:54:13,010 --> 00:54:17,420 Se siete appassionati di video, quindi Berkeley ha un bootcamp impressionante 911 00:54:17,420 --> 00:54:21,060 questo è several-- che una specie di lungo. 912 00:54:21,060 --> 00:54:24,210 E vi insegnerà quasi tutto ciò vuoi sapere R. 913 00:54:24,210 --> 00:54:27,770 >> E allo stesso modo, c'è Codeacademy e tutte queste altre specie 914 00:54:27,770 --> 00:54:29,414 siti web di interattivi. 915 00:54:29,414 --> 00:54:31,580 Sono inoltre sempre common-- sempre più comune. 916 00:54:31,580 --> 00:54:33,749 Quindi questo è molto simile a Codeacademy. 917 00:54:33,749 --> 00:54:35,790 E, infine, se si vogliono Comunità e aiutare, 918 00:54:35,790 --> 00:54:38,800 questi sono un gruppo di cose che si può andare a. 919 00:54:38,800 --> 00:54:40,880 Ovviamente, abbiamo ancora utilizzare le mailing list, basta 920 00:54:40,880 --> 00:54:44,860 come quasi tutti gli altri programmazione comunità linguistica. 921 00:54:44,860 --> 00:54:47,880 E #rstats, questo è la nostra comunità Twitter. 922 00:54:47,880 --> 00:54:49,580 Che in realtà è abbastanza comune. 923 00:54:49,580 --> 00:54:50,850 E allora l'utente! 924 00:54:50,850 --> 00:54:52,340 E 'solo la nostra conferenza. 925 00:54:52,340 --> 00:54:55,390 >> E poi, naturalmente, si può utilizzare tutte queste altre cose di Q & A, 926 00:54:55,390 --> 00:54:57,680 come Stack Overflow, Google, e quindi GitHub. 927 00:54:57,680 --> 00:55:00,490 Poiché la maggior parte di questi pacchetti e un sacco di comunità 928 00:55:00,490 --> 00:55:03,420 sarà incentrata in via di sviluppo codice perché è open source. 929 00:55:03,420 --> 00:55:05,856 Ed è solo molto bello su GitHub. 930 00:55:05,856 --> 00:55:08,730 E, infine, potete contattarmi se basta avete domande veloci. 931 00:55:08,730 --> 00:55:13,530 Così mi puoi trovare su Twitter qui, il mio sito web, e solo la mia e-mail. 932 00:55:13,530 --> 00:55:17,840 Così si spera, che è stato something-- pochi occhiolino 933 00:55:17,840 --> 00:55:20,900 di ciò che R è veramente in grado di fare. 934 00:55:20,900 --> 00:55:23,990 E si spera, basta prova anche questi tre collegamenti 935 00:55:23,990 --> 00:55:25,760 e vedere cosa si può fare di più. 936 00:55:25,760 --> 00:55:28,130 E credo che sia proprio su di esso. 937 00:55:28,130 --> 00:55:28,630 Grazie. 938 00:55:28,630 --> 00:55:30,780 >> [Applausi] 939 00:55:30,780 --> 00:55:31,968