1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [Música tocando] 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 Dustin do meu nome. 6 00:00:14,980 --> 00:00:18,419 Entón, eu vou estar presentando Análise de datos en R. 7 00:00:18,419 --> 00:00:19,710 Só un pouco sobre min mesmo. 8 00:00:19,710 --> 00:00:24,320 Eu son actualmente un estudante de posgrao en as Ciencias da Enxeñaría e aplicada. 9 00:00:24,320 --> 00:00:28,330 Eu estudo un cruce de aprendizaxe de máquina e estatísticas 10 00:00:28,330 --> 00:00:31,375 Análise de datos de modo en que R é realmente fundamental para o 11 00:00:31,375 --> 00:00:33,790 Fago nunha base diaria. 12 00:00:33,790 --> 00:00:35,710 >> E R é especialmente bo para a análise de datos 13 00:00:35,710 --> 00:00:39,310 porque é moi bo para prototipado. 14 00:00:39,310 --> 00:00:43,590 E, normalmente, cando está facendo algún tipo de análise de datos, unha morea de problemas 15 00:00:43,590 --> 00:00:44,920 van cognitiva. 16 00:00:44,920 --> 00:00:48,700 E así, só quere ter algúns realmente boa linguaxe que 17 00:00:48,700 --> 00:00:53,770 é só bo para facer built-in funcións, en oposición 18 00:00:53,770 --> 00:00:57,430 a ter que xestione as cousas de baixo nivel. 19 00:00:57,430 --> 00:01:01,040 Entón, en principio, eu só vou para introducir o que é de R, por que 20 00:01:01,040 --> 00:01:04,540 quere usalo, e a continuación, pasar por riba nalgún demo, 21 00:01:04,540 --> 00:01:07,060 e só ir a partir de aí. 22 00:01:07,060 --> 00:01:08,150 >> Entón, o que é de R? 23 00:01:08,150 --> 00:01:11,180 R é só unha linguaxe desenvolvida para computación estatística 24 00:01:11,180 --> 00:01:12,450 e visualización. 25 00:01:12,450 --> 00:01:16,000 Entón, o que isto significa que é unha moi excelente lingua 26 00:01:16,000 --> 00:01:22,400 para todo tipo de cousas que se encarga de incerteza ou visualización de datos. 27 00:01:22,400 --> 00:01:24,850 Entón tes todo isto distribucións de probabilidade. 28 00:01:24,850 --> 00:01:27,140 Non van ser built-in funcións. 29 00:01:27,140 --> 00:01:31,650 Tamén terá excelente plotagem paquetes. 30 00:01:31,650 --> 00:01:34,110 >> Python é outro competidor Idioma para datos. 31 00:01:34,110 --> 00:01:40,020 E unha cousa que eu creo que R é moito mellor a é a vista. 32 00:01:40,020 --> 00:01:45,200 Entón, o que vai ver na demo como ben é só unha linguaxe moi intuitiva 33 00:01:45,200 --> 00:01:48,050 que simplemente funciona moi ben. 34 00:01:48,050 --> 00:01:53,140 Tamén é libre e de código aberto, como é outra boa linguaxe, eu creo. 35 00:01:53,140 --> 00:01:55,440 >> E aquí, unha morea de só palabras clave xogado en ti. 36 00:01:55,440 --> 00:02:00,450 É dinámico, é dicir, se ten un tipo específico asignado a un obxecto 37 00:02:00,450 --> 00:02:02,025 que el só vai mudalo on the fly. 38 00:02:02,025 --> 00:02:05,670 É preguiceiro, por iso é intelixente sobre como o fai cálculos. 39 00:02:05,670 --> 00:02:12,250 Funcional que significa que realmente pode funcionar baseado fóra de funcións tan anything-- 40 00:02:12,250 --> 00:02:16,910 calquera tipo de manipulación que é facendo, el estará baseado funcións. 41 00:02:16,910 --> 00:02:20,162 >> Así, os operadores binarios, por exemplo, son funcións só inherentemente. 42 00:02:20,162 --> 00:02:21,870 E todo o que vai facer é 43 00:02:21,870 --> 00:02:24,690 será correr en si funcións. 44 00:02:24,690 --> 00:02:27,140 E entón orientada a obxectos tamén. 45 00:02:27,140 --> 00:02:30,930 >> Entón aquí está unha trama xkcd. 46 00:02:30,930 --> 00:02:34,350 Non só porque eu sinto que Xkcd é fundamental para calquera tipo 47 00:02:34,350 --> 00:02:37,770 de presentación, senón porque Eu sinto que iso realmente 48 00:02:37,770 --> 00:02:42,160 martela o punto en que unha gran parte do momento en que está facendo algún tipo de datos 49 00:02:42,160 --> 00:02:46,570 análise, o problema non está tanto o quão rápido el corre, 50 00:02:46,570 --> 00:02:49,850 pero canto tempo vai levalo a programar a tarefa. 51 00:02:49,850 --> 00:02:54,112 Entón, aquí é só analizar se estratexia a ou b é máis eficiente. 52 00:02:54,112 --> 00:02:55,820 Este será algo que é 53 00:02:55,820 --> 00:02:58,290 enfrontará moito con en tipo de linguaxes de baixo nivel 54 00:02:58,290 --> 00:03:03,440 onde está lidando con fallos Lun, distribución de memoria, initializations, 55 00:03:03,440 --> 00:03:05,270 mesmo facendo as funcións embutidas. 56 00:03:05,270 --> 00:03:09,920 E este material está todo tratado moi, moi elegante en R. 57 00:03:09,920 --> 00:03:12,839 >> Entón, só para martelar este punto, o maior pescozo 58 00:03:12,839 --> 00:03:13,880 será cognitivo. 59 00:03:13,880 --> 00:03:17,341 Así, a análise de datos é un problema moi difícil. 60 00:03:17,341 --> 00:03:19,340 Se está facendo aprendizaxe de máquina ou se está 61 00:03:19,340 --> 00:03:22,550 facendo só algún tipo de explotación de datos de base, 62 00:03:22,550 --> 00:03:25,290 non quere ter para levar un documento 63 00:03:25,290 --> 00:03:27,440 e despois compilar algo cada vez que 64 00:03:27,440 --> 00:03:31,010 quero ver o que a columna parece, o que en particular entradas nunha matriz 65 00:03:31,010 --> 00:03:32,195 parece. 66 00:03:32,195 --> 00:03:34,320 Entón só quere ter algunha interface moi legal 67 00:03:34,320 --> 00:03:37,740 pode realizar unha función simple que os índices para o que quere que 68 00:03:37,740 --> 00:03:41,870 desexa e basta executa-lo de alí. 69 00:03:41,870 --> 00:03:44,190 E precisa dominio linguaxes específicas para iso. 70 00:03:44,190 --> 00:03:51,750 E R realmente vai axudar a definir o problema e resolver-lo deste xeito. 71 00:03:51,750 --> 00:03:58,690 >> Entón aquí vai unha que mostra a programación enredo popularidade de R como foi aínda co tempo. 72 00:03:58,690 --> 00:04:04,060 Entón, como podes ver, como 2013 ou polo que só explotado tremendamente. 73 00:04:04,060 --> 00:04:09,570 E iso foi só por causa diso gran tendencia na industria de tecnoloxía 74 00:04:09,570 --> 00:04:10,590 sobre big data. 75 00:04:10,590 --> 00:04:13,010 Ademais, non só a tecnoloxía industria, pero realmente 76 00:04:13,010 --> 00:04:16,490 calquera isso-- industria, porque moitas das industrias 77 00:04:16,490 --> 00:04:20,589 son unha especie de fundamental para tratar de resolver estes problemas. 78 00:04:20,589 --> 00:04:24,590 E, normalmente, pode que algún bo forma de medir estes problemas 79 00:04:24,590 --> 00:04:29,720 ou incluso define-los ou resolvelos los usando datos. 80 00:04:29,720 --> 00:04:35,430 Entón, eu creo que agora é o 11º R lingua máis popular en TIOBE 81 00:04:35,430 --> 00:04:38,200 e foi crecente desde entón. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Entón, aquí está un pouco máis características de R. Ten 84 00:04:43,080 --> 00:04:46,900 un enorme número de paquetes e por todas estas cousas distintas. 85 00:04:46,900 --> 00:04:52,470 Entón, cando ten un determinado problema, a maioría 86 00:04:52,470 --> 00:04:55,060 o tempo de R terá esa función para ti. 87 00:04:55,060 --> 00:04:58,520 Entón, se quere construír algún tipo de máquina 88 00:04:58,520 --> 00:05:02,770 algoritmo de aprendizaxe chamado Aleatoria Bosque ou Árbores de decisión, 89 00:05:02,770 --> 00:05:07,530 ou mesmo tentando aproveitar a media de unha función ou algún deste material, 90 00:05:07,530 --> 00:05:10,000 R vai ter iso. 91 00:05:10,000 --> 00:05:14,190 >> E se fai se preocupa optimización, unha cousa que é común 92 00:05:14,190 --> 00:05:17,430 é que despois que fixo prototipado algún tipo de linguaxe de alto nivel, 93 00:05:17,430 --> 00:05:19,810 vai xogar este em-- Só vai porto que máis de 94 00:05:19,810 --> 00:05:21,550 a algunha linguaxe de baixo nivel. 95 00:05:21,550 --> 00:05:26,090 O que é bo sobre R é que unha vez que é prototipado feito isto, pode realizar C ++, 96 00:05:26,090 --> 00:05:29,510 ou Fortran, ou calquera destes os de nivel máis baixo directamente na R. 97 00:05:29,510 --> 00:05:32,320 Entón esta é unha realidade recurso interesante sobre R, 98 00:05:32,320 --> 00:05:35,930 se realmente se preocupan o punto de optimización. 99 00:05:35,930 --> 00:05:39,490 >> E iso tamén é moi bo para visualizacións na web. 100 00:05:39,490 --> 00:05:43,530 Así D3.js, por exemplo, é Eu creo que un outro seminario 101 00:05:43,530 --> 00:05:45,130 que presentamos hoxe. 102 00:05:45,130 --> 00:05:48,510 E iso é realmente impresionante para facendo visualizacións interactivas. 103 00:05:48,510 --> 00:05:54,460 E D3.js supón que teña algún tipo de datos a ser Plot 104 00:05:54,460 --> 00:05:58,080 e R é unha boa forma de ser capaz de facer a análise dos datos antes de export-lo 105 00:05:58,080 --> 00:06:04,220 sobre a D3.js ou mesmo só correr Ordes D3.js en si mesmo R, 106 00:06:04,220 --> 00:06:08,240 así como todos estes outras bibliotecas ben. 107 00:06:08,240 --> 00:06:13,041 >> Entón esa foi só a introdución de o que é R e por que pode usalo. 108 00:06:13,041 --> 00:06:14,790 Polo tanto, esperamos que, eu teño Está convencido algo 109 00:06:14,790 --> 00:06:18,460 sobre só tentando ver o que é. 110 00:06:18,460 --> 00:06:23,930 Entón, eu estou indo a ir adiante e pasar por algúns fundamentos sobre os obxectos R 111 00:06:23,930 --> 00:06:26,150 eo que realmente pode facer. 112 00:06:26,150 --> 00:06:29,690 >> Entón, aquí é só un banda de comandos de matemáticas. 113 00:06:29,690 --> 00:06:35,000 Entón diga you're-- quere construír mesmo idioma e só quere 114 00:06:35,000 --> 00:06:38,080 para ter unha chea de ferramentas diferentes. 115 00:06:38,080 --> 00:06:42,520 Calquera tipo de operación pensas que quero é practicamente estará en R. 116 00:06:42,520 --> 00:06:44,150 >> Entón aquí é 2 máis 2. 117 00:06:44,150 --> 00:06:46,090 Aquí é 2 veces pi. 118 00:06:46,090 --> 00:06:51,870 R ten unha morea de constantes internas que vai empregar a miúdo como pi, e. 119 00:06:51,870 --> 00:06:56,230 >> E entón, aquí está 7 máis runif, así runif de 1. 120 00:06:56,230 --> 00:07:02,450 Esta é unha función que é xera un uniforme aleatoria de 0 a 1. 121 00:07:02,450 --> 00:07:04,400 E despois hai a 3 ao poder do 4. 122 00:07:04,400 --> 00:07:06,430 Hai raíces cadradas. 123 00:07:06,430 --> 00:07:07,270 >> Hai rexistro. 124 00:07:07,270 --> 00:07:14,500 Entón rexistro vai facer de base exponencial por si só. 125 00:07:14,500 --> 00:07:18,337 E entón, se se especifica unha base, a continuación, pode facer o que quere de base. 126 00:07:18,337 --> 00:07:19,920 E entón aquí están algúns outros comandos. 127 00:07:19,920 --> 00:07:22,180 Entón tes 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Entón tes o resto. 129 00:07:24,910 --> 00:07:27,110 Entón tes científica notación se tamén 130 00:07:27,110 --> 00:07:34,060 quero facer só máis e cousas máis complicadas. 131 00:07:34,060 --> 00:07:37,320 >> Entón aquí está a asignación. 132 00:07:37,320 --> 00:07:40,830 Entón atribucións típicas en R faise cunha frecha 133 00:07:40,830 --> 00:07:43,440 por iso é menos que e, a continuación, o guión. 134 00:07:43,440 --> 00:07:47,250 Entón aquí eu só estou atribuíndo 3 ao val variable. 135 00:07:47,250 --> 00:07:50,160 >> E entón eu estou imprimindo val e entón ela mostra tres. 136 00:07:50,160 --> 00:07:53,920 Por defecto en R intérprete, el imprimirá as cousas para ti 137 00:07:53,920 --> 00:07:57,280 así que non ten que especificar imprimir un val calquera momento que quere imprimir algo. 138 00:07:57,280 --> 00:08:00,200 Pode só facer val e logo vai facelo por vostede. 139 00:08:00,200 --> 00:08:04,380 >> Ademais, pode utilizar tecnicamente iguais como un operador de asignación. 140 00:08:04,380 --> 00:08:07,190 Hai pequenas sutilezas entre usar a frecha 141 00:08:07,190 --> 00:08:10,730 operador e os iguais operador de atribucións. 142 00:08:10,730 --> 00:08:15,470 Principalmente por convención, todo só vai usar o operador frecha. 143 00:08:15,470 --> 00:08:21,850 >> E aquí, estou atribuíndo este notación oblicua chamada 1 colonos 6. 144 00:08:21,850 --> 00:08:26,010 Isto xera un vector de 1 a 6. 145 00:08:26,010 --> 00:08:29,350 E iso moi bo porque, logo acaba de asignar o vector para val 146 00:08:29,350 --> 00:08:34,270 e que funciona por si só. 147 00:08:34,270 --> 00:08:37,799 >> Entón, iso xa está a suceder a partir dun single-- un dato moi intuitiva 148 00:08:37,799 --> 00:08:41,070 estrutura de só un par de algún tipo de tipo nun vector 149 00:08:41,070 --> 00:08:45,670 e que pode recoller todos os valores escalares para ti. 150 00:08:45,670 --> 00:08:50,770 Entón, despois de pasar de escalar, vostede ter obxectos R e este é un vector. 151 00:08:50,770 --> 00:08:55,610 Un vector é calquera tipo de recollida do mesmo tipo. 152 00:08:55,610 --> 00:08:58,150 Entón, aquí están unha morea de vectores. 153 00:08:58,150 --> 00:08:59,800 >> Polo tanto, este é numérico. 154 00:08:59,800 --> 00:09:02,440 Numérico é o camiño de R de dicir dobre. 155 00:09:02,440 --> 00:09:07,390 E así, por defecto, calquera número será un dobre. 156 00:09:07,390 --> 00:09:13,150 >> Entón se ten c de 1,1, 3, negativa de 5,7, o c é unha función. 157 00:09:13,150 --> 00:09:16,760 Este encadea os tres números nun vector. 158 00:09:16,760 --> 00:09:19,619 E iso vai ser-- entón se notar 3, por si só, 159 00:09:19,619 --> 00:09:21,910 normalmente asumiría que iso é como un número enteiro, 160 00:09:21,910 --> 00:09:25,050 senón porque todos os vectores son do mesmo tipo, 161 00:09:25,050 --> 00:09:28,660 Este é un vector de dúos ou numérica neste caso. 162 00:09:28,660 --> 00:09:34,920 >> rnorm é unha función que xera variables-- normal estándar 163 00:09:34,920 --> 00:09:36,700 ou valores normal estándar. 164 00:09:36,700 --> 00:09:38,360 E eu estou especificando dous deles. 165 00:09:38,360 --> 00:09:43,840 Entón, eu estou facendo rnorm 2, atribuíndo iso a devs, e entón eu estou imprimindo devs. 166 00:09:43,840 --> 00:09:47,350 Entón, eses son só dous valores normais aleatorios. 167 00:09:47,350 --> 00:09:50,060 >> E entón se fai INTS se preocupa con números enteiros. 168 00:09:50,060 --> 00:09:54,650 Polo tanto, esta é só sobre a memoria distribución e gardar o tamaño da memoria. 169 00:09:54,650 --> 00:10:01,460 Entón tería que engadir seus números polo capital L. 170 00:10:01,460 --> 00:10:04,170 >> En xeral, este é Notación historial de R 171 00:10:04,170 --> 00:10:06,940 para algo chamado enteiro longo. 172 00:10:06,940 --> 00:10:09,880 Así, a maior parte do tempo, vai estar lidando con dobres. 173 00:10:09,880 --> 00:10:15,180 E se nunca será máis tarde en optimizar o seu código, 174 00:10:15,180 --> 00:10:18,110 pode simplemente engadir estes L's despois ou durante o mesmo 175 00:10:18,110 --> 00:10:22,280 se é como premonitório sobre o que vai facer estas variables. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Entón, aquí é un vector de caracteres. 178 00:10:26,890 --> 00:10:31,440 Entón, de novo, eu estou concatenando tres cordas esta vez. 179 00:10:31,440 --> 00:10:36,230 Teña en conta que cordas dobres e cordas simples son as mesmas en R. 180 00:10:36,230 --> 00:10:41,000 Entón, eu teño Arthur e Marvin e así cando estou imprimilas los, todos eles 181 00:10:41,000 --> 00:10:43,210 van amosar cordas dobres. 182 00:10:43,210 --> 00:10:45,880 E se tamén quere incluír a secuencia de matrimonio ou solteiro 183 00:10:45,880 --> 00:10:50,070 nos seus personaxes, entón podes ou cambiar as súas cordas. 184 00:10:50,070 --> 00:10:53,540 >> Entón Marvin ao segundo elemento, este é 185 00:10:53,540 --> 00:10:56,380 vai show-- vostede só ten cordas dobres 186 00:10:56,380 --> 00:10:59,050 e, a continuación, unha única secuencia de xeito que este é alterna. 187 00:10:59,050 --> 00:11:04,040 Se non, se quere usar un dobre operador de cadea nun cordón dobre 188 00:11:04,040 --> 00:11:07,090 cando está declarando-o, a continuación, non necesitará empregar o operador de escape. 189 00:11:07,090 --> 00:11:10,600 Entón fai a dobre cadea barra invertida. 190 00:11:10,600 --> 00:11:13,330 >> E, finalmente, nós tamén ter vectores lóxicos. 191 00:11:13,330 --> 00:11:15,890 Entón logical-- tan certo e FALSE, e son 192 00:11:15,890 --> 00:11:18,880 será todas as letras maiúsculas. 193 00:11:18,880 --> 00:11:22,370 E entón, unha vez máis, eu estou concatenando Los e, a continuación, atribuíndolles a bools. 194 00:11:22,370 --> 00:11:24,590 Entón bools mostrará vostede TRUE, FALSE e TRUE. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Entón aquí está a indexación vectorized. 197 00:11:31,620 --> 00:11:34,870 Así, en principio, eu estou tomando un function-- 198 00:11:34,870 --> 00:11:39,230 iso chámase sequence-- secuencia de 2 a 12. 199 00:11:39,230 --> 00:11:42,490 E eu estou tendo unha secuencia por 2. 200 00:11:42,490 --> 00:11:46,660 Por iso, vai facer 2, 4, 6, 8, 10 e 12. 201 00:11:46,660 --> 00:11:50,080 E entón, eu son a indexación para obter o terceiro elemento. 202 00:11:50,080 --> 00:11:55,770 >> Entón, unha cousa a ter presente é de que R índices a partir do 1. 203 00:11:55,770 --> 00:12:00,550 Entón vals 3 dará ti o terceiro elemento. 204 00:12:00,550 --> 00:12:04,580 Este é tipo de diferente doutros linguas en que comeza de cero. 205 00:12:04,580 --> 00:12:09,780 Así, en C ou C ++, por exemplo, está indo para obter o cuarto elemento. 206 00:12:09,780 --> 00:12:13,280 >> E aquí está vals 3-5. 207 00:12:13,280 --> 00:12:16,030 Entón, unha cousa que é moi legal é que 208 00:12:16,030 --> 00:12:20,410 pode xerar variables temporais dentro e despois é só usalos en tempo real. 209 00:12:20,410 --> 00:12:21,960 Entón aquí está 3-5. 210 00:12:21,960 --> 00:12:25,070 Entón, eu estou xerando un vector 3, 4, e 5 e logo 211 00:12:25,070 --> 00:12:29,700 Estou indexación para obter o terceiro, cuarto e quinto elementos. 212 00:12:29,700 --> 00:12:32,280 >> Entón, do mesmo xeito, pode Resumo Este só facer 213 00:12:32,280 --> 00:12:35,280 calquera tipo de un vector que lle dá a indexación. 214 00:12:35,280 --> 00:12:40,050 Entón aquí está vals e despois o primeiro, terceiro e sexto elementos. 215 00:12:40,050 --> 00:12:42,800 E entón, se quere para facer un complemento, 216 00:12:42,800 --> 00:12:45,210 entón só facer o menos despois e que vai 217 00:12:45,210 --> 00:12:48,600 dar-lle todo o que non é o primeiro, terceiro, sexto ou elemento. 218 00:12:48,600 --> 00:12:51,590 Polo tanto, este será de 4, 8 e 10. 219 00:12:51,590 --> 00:12:54,380 >> E se queres comezar aínda máis avanzado, 220 00:12:54,380 --> 00:12:57,610 pode concatenar vectores booleanas. 221 00:12:57,610 --> 00:13:05,210 Polo tanto, este índice está indo darlle este vector booleano de lonxitude 6. 222 00:13:05,210 --> 00:13:07,280 Entón rep CERTO comas 3. 223 00:13:07,280 --> 00:13:09,680 Isto repetir CERTOS tres veces. 224 00:13:09,680 --> 00:13:12,900 Entón, iso vai darlle unha vector TRUE, TRUE, TRUE. 225 00:13:12,900 --> 00:13:17,470 >> rep FALSE 4-- iso vai darlle un vector de FALSE, FALSE, FALSE, FALSE. 226 00:13:17,470 --> 00:13:21,280 E, a continuación, c vai concatenar estes dous Booleans xuntos. 227 00:13:21,280 --> 00:13:24,090 Entón, está indo para obter tres Trues e, a continuación, catro FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> De xeito que cando vals índice, es indo para obter a verdade, verdade, TRUE. 229 00:13:28,460 --> 00:13:31,420 Entón, iso vai dicir que si, Quero eses tres elementos. 230 00:13:31,420 --> 00:13:33,520 E entón FALSE, FALSE, FALSE, FALSE vai 231 00:13:33,520 --> 00:13:37,140 dicir non, eu non quero que eses elementos por iso non vai devolve-los. 232 00:13:37,140 --> 00:13:41,490 >> E eu creo que non hai, en realidade, un erro de dixitación aquí porque este está dicindo repeat CERTO 3 233 00:13:41,490 --> 00:13:47,990 e repetir FALSE 4, e tecnicamente, vostede só ten seis elementos para repetir FALSE, 234 00:13:47,990 --> 00:13:50,470 debe ser repeat FALSE 3. 235 00:13:50,470 --> 00:13:55,260 Creo que R tamén é intelixente dabondo, tales que, se se especifica só 4 aquí, entón 236 00:13:55,260 --> 00:13:56,630 non vai mesmo erro fóra. 237 00:13:56,630 --> 00:13:58,480 Vai só darlle ese valor. 238 00:13:58,480 --> 00:14:00,970 Entón, vai simplemente ignorar esta cuarta FALSE. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Entón aquí está a asignación vectorized. 241 00:14:09,270 --> 00:14:15,480 Entón set.seed-- iso só define o semente para números pseudoaleatorios. 242 00:14:15,480 --> 00:14:20,110 Entón, eu estou definindo a semente 42, o que significa que se eu xerar 243 00:14:20,110 --> 00:14:22,950 tres aleatoria normal valores e, a continuación, se 244 00:14:22,950 --> 00:14:27,400 executar set.seed no seu propio país ordenador usando o mesmo valor 42, 245 00:14:27,400 --> 00:14:30,990 logo, tamén terá a mesmos tres normais aleatorias. 246 00:14:30,990 --> 00:14:33,411 >> Entón, iso é moi bo para a reproducibilidade. 247 00:14:33,411 --> 00:14:35,910 Normalmente, cando está facendo algunha tipo de análise científica, 248 00:14:35,910 --> 00:14:37,230 desexa definir a semente. 249 00:14:37,230 --> 00:14:41,270 Desta forma, outros científicos pode só reproducir exactamente o mesmo código que ten 250 00:14:41,270 --> 00:14:44,790 feito porque terán a exacta mesmas variables aleatorias isso-- ou chou 251 00:14:44,790 --> 00:14:47,270 valores que sacou fóra tamén. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> E así a asignación vectorized aquí está amosando os vals 1-2. 254 00:14:53,910 --> 00:14:59,290 Por iso, leva os dous primeiros elementos de vals e atribúe a eles a 0. 255 00:14:59,290 --> 00:15:03,940 E entón, tamén se pode simplemente facer o cousa semellante cos Booleans. 256 00:15:03,940 --> 00:15:09,340 >> Entón vals non é igual a 0-- esta vontade darlle unha falsa vector, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 neste caso. 258 00:15:10,350 --> 00:15:13,770 E, a continuación, que vai dicir calquera destes índices iso fose verdade, 259 00:15:13,770 --> 00:15:15,270 logo vai asignar esa a 5. 260 00:15:15,270 --> 00:15:18,790 Por iso, leva o terceiro elemento aquí e, a continuación, atribúe a el a 5. 261 00:15:18,790 --> 00:15:22,300 >> E iso é moi bo en comparación con linguaxes de baixo nivel 262 00:15:22,300 --> 00:15:25,560 onde ten que usar para loops para facer todas estas cousas vectorized 263 00:15:25,560 --> 00:15:30,281 porque é só moi intuitiva e é unha única one-liner. 264 00:15:30,281 --> 00:15:32,030 E o que é grande sobre notación vectorized 265 00:15:32,030 --> 00:15:37,020 é que no R, estes son unha especie de built-in de xeito que xa son case tan rápido 266 00:15:37,020 --> 00:15:42,490 como facer nunha linguaxe de baixo nivel como oposición a facer un loop en R 267 00:15:42,490 --> 00:15:46,317 e despois ter que facer o propio indexación dinámica. 268 00:15:46,317 --> 00:15:48,900 E iso vai ser máis lento que facer este tipo de cousas vectorized 269 00:15:48,900 --> 00:15:55,950 onde pode facelo en paralelo, onde é facelo en enfiar basicamente. 270 00:15:55,950 --> 00:15:58,650 >> Entón, aquí está vetorizado operacións. 271 00:15:58,650 --> 00:16:04,920 Entón, eu estou xerando un valor de 1 a 3, atribuíndo que a vec1, 3 a 5, vec2, 272 00:16:04,920 --> 00:16:05,950 engadindo-os xuntos. 273 00:16:05,950 --> 00:16:11,490 Engade-los compoñentes tan sabio é 1 + 3, 2 + 4, e así por diante. 274 00:16:11,490 --> 00:16:13,330 >> vec1 veces vec2. 275 00:16:13,330 --> 00:16:16,110 Este multiplica os dous valora a compoñente sabio. 276 00:16:16,110 --> 00:16:21,830 Polo tanto, é un veces 3, 2 veces 4, e logo 3 veces 5. 277 00:16:21,830 --> 00:16:28,250 >> E, a continuación, do mesmo xeito que pode tamén facer comparisons-- comparacións lóxicas. 278 00:16:28,250 --> 00:16:33,640 Entón é FALSE FALSE verdade neste caso porque 1 non é maior que 3, 279 00:16:33,640 --> 00:16:35,920 2 non é superior a 4. 280 00:16:35,920 --> 00:16:41,160 Isto é, creo, outro erro de dixitación, 3 en definitiva non é superior a 5. 281 00:16:41,160 --> 00:16:41,660 Si. 282 00:16:41,660 --> 00:16:45,770 E así pode simplemente facer todo estas operacións simples 283 00:16:45,770 --> 00:16:48,350 porque a súa herdado a partir das propias clases. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Entón, iso foi só o vector. 286 00:16:52,580 --> 00:16:56,530 E iso é unha especie de máis fundamental R obxecto porque xa un vector, 287 00:16:56,530 --> 00:16:59,170 pode construír obxectos máis avanzados. 288 00:16:59,170 --> 00:17:00,560 >> Entón aquí está unha matriz. 289 00:17:00,560 --> 00:17:05,030 Esta é esencialmente a abstracción de que é unha matriz en si. 290 00:17:05,030 --> 00:17:10,099 Polo tanto, neste caso, é de tres diferentes vectores, onde cada un é unha columna, 291 00:17:10,099 --> 00:17:12,710 ou pode considera-lo como cada un é unha liña. 292 00:17:12,710 --> 00:17:18,250 >> Entón, eu estou almacenando unha matriz de 1 a 9 e logo, estou especificando tres liñas. 293 00:17:18,250 --> 00:17:23,364 Entón 1-9 lle dará un vector 1, 2, 3, 4, 5, 6, e todo o camiño ata 9. 294 00:17:23,364 --> 00:17:29,250 >> Un aspecto a ter tamén en conta é que R almacena valores en formato de columna-major. 295 00:17:29,250 --> 00:17:34,160 Polo tanto, noutras palabras, cando ve un a 9, que vai almacenar eles-- 296 00:17:34,160 --> 00:17:36,370 que será 1, 2, 3, na primeira columna, 297 00:17:36,370 --> 00:17:38,510 e, a continuación, que vai facer 4, 5, 6 na segunda columna, 298 00:17:38,510 --> 00:17:41,440 e, a continuación, 7, 8, 9, na terceira columna. 299 00:17:41,440 --> 00:17:45,570 >> E aquí están algunhas outras funcións comúns que pode usar. 300 00:17:45,570 --> 00:17:49,650 Entón din calquera dúbida, iso lle vai dar as dimensións da matriz. 301 00:17:49,650 --> 00:17:52,620 Vai facelo regresar un vector de dimensión. 302 00:17:52,620 --> 00:17:55,580 Polo tanto, neste caso, porque nosa matriz é de 3 por 3, 303 00:17:55,580 --> 00:18:01,900 vai darlle unha vector numérico que é 3 3. 304 00:18:01,900 --> 00:18:05,270 >> E aquí é só amosar multiplicación de matrices. 305 00:18:05,270 --> 00:18:11,970 Por iso, normalmente, se acaba de facer asterisk-- tan mat asterisco mat-- 306 00:18:11,970 --> 00:18:15,380 este será operación-compoñente sabio 307 00:18:15,380 --> 00:18:17,300 ou o que se chama o produto Hadamard. 308 00:18:17,300 --> 00:18:21,310 Por iso, vai facer cada elemento compoñente-wise. 309 00:18:21,310 --> 00:18:23,610 Con todo, se quere multiplication-- matriz 310 00:18:23,610 --> 00:18:29,380 así multiplicando os primeiros tempos de liña primeira columna da segunda matriz 311 00:18:29,380 --> 00:18:34,510 e así on-- usaría esta operación por cento. 312 00:18:34,510 --> 00:18:38,110 >> E t de fita é só un operación para a transposición. 313 00:18:38,110 --> 00:18:42,590 Entón, eu estou dicindo que tomar a trasposta en a matriz, multiplicala lo pola matriz 314 00:18:42,590 --> 00:18:43,090 si. 315 00:18:43,090 --> 00:18:45,006 E entón el vai voltar a vostede máis 3 316 00:18:45,006 --> 00:18:50,700 por 3 matriz de visualización o produto que desexa. 317 00:18:50,700 --> 00:18:53,750 >> E así que foi matriz. 318 00:18:53,750 --> 00:18:56,020 Aquí está o que se chama un cadro de datos. 319 00:18:56,020 --> 00:19:00,780 A estrutura de datos que pode pensar como unha matriz, pero cada propia columna 320 00:19:00,780 --> 00:19:02,990 será dun tipo diferente. 321 00:19:02,990 --> 00:19:07,320 >> Entón, o que é realmente legal sobre datos cadros é que, en si, a análise dos datos, 322 00:19:07,320 --> 00:19:11,260 vai ter todo isto datos heteroxéneos e todo iso realmente 323 00:19:11,260 --> 00:19:15,640 desarrumado cousas onde cada unha das columnas eles mesmos poden ser de diferentes tipos. 324 00:19:15,640 --> 00:19:21,460 Entón aquí estou dicindo crear un cadro de datos, facer ints 1-3, 325 00:19:21,460 --> 00:19:24,750 e, a continuación, tamén teñen un vector personaxe. 326 00:19:24,750 --> 00:19:28,470 Entón podo índice través Cada unha destas columnas 327 00:19:28,470 --> 00:19:30,930 e entón eu vou comezar os propios valores. 328 00:19:30,930 --> 00:19:34,370 E tamén pode facer algún tipo de operacións en cadros de datos. 329 00:19:34,370 --> 00:19:38,040 E a maioría das veces cando está facendo análise de datos ou algún tipo 330 00:19:38,040 --> 00:19:42,042 de pre-procesamento, pode traballar con estas estruturas de datos 331 00:19:42,042 --> 00:19:44,250 onde cada columna vai ser de outro tipo. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Finalmente, así que estas son esencialmente só os catro obxectos esenciais na Lista R. 334 00:19:52,970 --> 00:19:55,820 só vai recoller todas as outros obxectos que quere. 335 00:19:55,820 --> 00:20:00,130 Por iso, este pode almacenar nunha variable que pode acceder facilmente. 336 00:20:00,130 --> 00:20:02,370 >> Entón, aquí, eu estou tendo unha lista. 337 00:20:02,370 --> 00:20:04,460 Eu digo cousas é igual a 3. 338 00:20:04,460 --> 00:20:08,060 Entón, eu vou ter un elemento no da lista, e iso é chamado de material, 339 00:20:08,060 --> 00:20:10,570 e que vai ter o valor 3. 340 00:20:10,570 --> 00:20:13,140 >> Eu tamén pode crear unha matriz. 341 00:20:13,140 --> 00:20:17,970 Polo tanto, este é de 1 a 4 e liña final é igual a 2, de xeito que unha matriz de 2 por 2. 342 00:20:17,970 --> 00:20:20,270 Tamén na lista e chámase mat. 343 00:20:20,270 --> 00:20:24,690 moreStuff, unha cadea de caracteres, e mesmo outra lista en si mesmo. 344 00:20:24,690 --> 00:20:27,710 >> Polo tanto, esta é unha lista que é 5 e oso. 345 00:20:27,710 --> 00:20:30,990 Por iso, ten o valor de 5 e ten o oso cadea de caracteres 346 00:20:30,990 --> 00:20:32,710 e é unha lista dentro dunha lista. 347 00:20:32,710 --> 00:20:35,965 Así, pode que estes cousas recursiva onde 348 00:20:35,965 --> 00:20:38,230 ten un another-- escriba dentro do modelo. 349 00:20:38,230 --> 00:20:41,420 Entón, do mesmo xeito, pode ter unha matriz dentro doutra matriz e así por diante. 350 00:20:41,420 --> 00:20:44,264 E a lista é só unha boa forma de recoller e agregar 351 00:20:44,264 --> 00:20:45,430 todos estes diferentes obxectos. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> E, finalmente, aquí é só axudar no caso Este foi só ir máis rápido. 354 00:20:57,150 --> 00:21:01,350 Entón, cando está confuso sobre algún tipo de función, 355 00:21:01,350 --> 00:21:03,510 pode facer axuda desa función. 356 00:21:03,510 --> 00:21:07,120 Así que pode facer axuda matriz ou unha matriz de punto de interrogación. 357 00:21:07,120 --> 00:21:11,430 E a axuda eo signo de interrogación son só unha abreviación para o mesmo 358 00:21:11,430 --> 00:21:13,040 polo que son alias. 359 00:21:13,040 --> 00:21:16,820 >> lm é unha función que só fai un modelo lineal. 360 00:21:16,820 --> 00:21:20,340 Pero se simplemente non ten idea de como iso obras, pode só facer axuda lm 361 00:21:20,340 --> 00:21:24,610 e que imos darlle algunhas tipo de documentación que 362 00:21:24,610 --> 00:21:27,960 mira como unha especie de páxina home en Unix, onde 363 00:21:27,960 --> 00:21:34,210 ten unha breve descrición do que que fai, tamén o que os seus argumentos son, 364 00:21:34,210 --> 00:21:38,850 o que retorna, e só consellos sobre como para usalo, e algúns exemplos ben. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Entón deixe-me ir adiante e amosar algúns de demostración do uso de R. Aceptar. 367 00:21:52,890 --> 00:21:55,470 Entón eu fun moi rapidamente só os datos 368 00:21:55,470 --> 00:21:59,440 estruturas e algún tipo de op-- algunhas das operacións. 369 00:21:59,440 --> 00:22:02,960 Velaí algunhas funcións. 370 00:22:02,960 --> 00:22:06,750 >> Entón aquí eu só vou para definir unha función. 371 00:22:06,750 --> 00:22:09,970 Entón, eu tamén estou usando operador de asignación aquí, 372 00:22:09,970 --> 00:22:12,610 e entón eu digo declaralo como unha función. 373 00:22:12,610 --> 00:22:14,140 E leva o valor de x. 374 00:22:14,140 --> 00:22:18,210 Polo tanto, este é calquera valor que quere e eu estou indo a voltar x si. 375 00:22:18,210 --> 00:22:20,840 Polo tanto, esta é a función identidade. 376 00:22:20,840 --> 00:22:23,670 >> E o que é legal sobre iso en comparación con outros idiomas 377 00:22:23,670 --> 00:22:26,330 e outra de baixo nivel linguas é que x 378 00:22:26,330 --> 00:22:29,350 pode ser de calquera tipo en si e el vai volver deste tipo. 379 00:22:29,350 --> 00:22:35,251 Así, pode imagine-- entón imos me basta con executar este axiña. 380 00:22:35,251 --> 00:22:35,750 Sentímolo. 381 00:22:35,750 --> 00:22:40,300 >> Entón, unha cousa que eu tamén debería mencionar é que este editor que está a usar 382 00:22:40,300 --> 00:22:41,380 chámase rstudio. 383 00:22:41,380 --> 00:22:44,389 Isto é o que se chama IDE. 384 00:22:44,389 --> 00:22:46,180 E unha cousa que é realmente agradable sobre este 385 00:22:46,180 --> 00:22:51,500 é que incorpora unha gran parte do as cousas que quere facer en R por si só 386 00:22:51,500 --> 00:22:53,180 só moi intuitiva. 387 00:22:53,180 --> 00:22:55,550 >> Entón aquí está unha consola intérprete. 388 00:22:55,550 --> 00:23:02,160 Entón, do mesmo xeito, tamén se pode obter este consola prima só facendo unha R. capitais 389 00:23:02,160 --> 00:23:05,630 E este é o mesmo que a consola. 390 00:23:05,630 --> 00:23:12,210 Entón eu só podo facer a función id x, x, x. 391 00:23:12,210 --> 00:23:16,130 E entăo-- e, a continuación, que vai estar ben en si. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Entón rstudio é grande porque ten a consola. 394 00:23:21,740 --> 00:23:25,360 Ela tamén ten os documentos desexa executar. 395 00:23:25,360 --> 00:23:28,629 E entón el ten algunhas variables que se pode ver en ambientes. 396 00:23:28,629 --> 00:23:30,420 E entón, se ten facer parcelas, entón 397 00:23:30,420 --> 00:23:33,730 pode só velo aquí, a diferenza de xestionar todos estes diferentes fiestras 398 00:23:33,730 --> 00:23:35,940 por si. 399 00:23:35,940 --> 00:23:40,530 >> En realidade, eu persoalmente uso Vin, pero eu sentir como rstudio é excelente só 400 00:23:40,530 --> 00:23:44,640 para obter unha boa idea de como usar R. Normalmente, 401 00:23:44,640 --> 00:23:47,040 cando estás aprender algunha nova tarefa, 402 00:23:47,040 --> 00:23:49,590 non quere tratar con moitas cousas á vez. 403 00:23:49,590 --> 00:23:53,120 Entón R é só un rstudio very-- é unha boa forma de aprender R 404 00:23:53,120 --> 00:23:56,760 sen ter que tratar con todas esas outras cousas. 405 00:23:56,760 --> 00:23:58,600 >> Entón, aquí estou id correndo Ola. 406 00:23:58,600 --> 00:24:00,090 Isto volve Ola. 407 00:24:00,090 --> 00:24:01,740 ID 123. 408 00:24:01,740 --> 00:24:04,610 Aquí é un vector de números enteiros. 409 00:24:04,610 --> 00:24:08,620 Entón, do mesmo xeito, porque pode tomar calquera algún tipo de valor, 410 00:24:08,620 --> 00:24:16,060 pode facer volver id x para que volte 1234 e 5. 411 00:24:16,060 --> 00:24:22,210 >> E deixe-me amosar-lle que este é realmente un número enteiro. 412 00:24:22,210 --> 00:24:28,800 E do mesmo xeito, se fai clase id x, que será enteiro. 413 00:24:28,800 --> 00:24:34,170 E entón, tamén se pode comparar os dous e que é certo. 414 00:24:34,170 --> 00:24:38,350 Entón, eu estou comprobando se id x é igual a igual ax e aviso 415 00:24:38,350 --> 00:24:39,760 que lle dá dúas trues. 416 00:24:39,760 --> 00:24:44,280 Polo tanto, este non está dicindo son os dous obxectos idénticos, 417 00:24:44,280 --> 00:24:46,845 pero son cada unha das entradas dentro dos vectores idénticos. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Aquí está bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Polo tanto, este é un pouco máis complicado na medida en que se ten unha condición e outra 421 00:24:58,470 --> 00:25:00,960 e logo, hai que dous argumentos de cada vez. 422 00:25:00,960 --> 00:25:02,640 Así, x é de calquera tipo. 423 00:25:02,640 --> 00:25:06,280 E eu digo isto O segundo argumento é a. 424 00:25:06,280 --> 00:25:08,380 Isto pode ser calquera cousa como ben. 425 00:25:08,380 --> 00:25:12,490 Pero por defecto, que vai levar 5, se non especificar nada. 426 00:25:12,490 --> 00:25:16,730 >> Entón aquí eu vou dicir Se x é maior que un. 427 00:25:16,730 --> 00:25:19,220 Entón, se eu non especificar un, el di que se x é maior que 5, 428 00:25:19,220 --> 00:25:20,470 entón eu estou indo para voltar TRUE. 429 00:25:20,470 --> 00:25:23,230 outra cousa, eu estou indo a voltar FALSE. 430 00:25:23,230 --> 00:25:24,870 Entón deixe-me ir adiante e establecer iso. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> E agora eu vou executar bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Entón, el di que é menos 3 than-- 3 é maior que 5. 434 00:25:39,150 --> 00:25:41,830 Non, non é tan falso. 435 00:25:41,830 --> 00:25:46,550 >> E bounded.compare 3 e vou para comparalos-lo usando un é igual a 2. 436 00:25:46,550 --> 00:25:50,700 Entón agora eu digo si, agora eu quero un para ser outra cousa. 437 00:25:50,700 --> 00:25:52,750 Entón, eu vou dicir unha, ten que ser 2. 438 00:25:52,750 --> 00:25:56,640 >> I pode facer este tipo de notación ou digo un é igual a dous. 439 00:25:56,640 --> 00:25:58,720 Esta é unha forma máis lexible en que cando está 440 00:25:58,720 --> 00:26:01,450 mirando para estes realmente funcións complicadas que 441 00:26:01,450 --> 00:26:08,110 tomar arguments-- múltiple e este pode haber decenas oftentimes-- só dicindo 442 00:26:08,110 --> 00:26:11,140 un é igual a 2 é máis lexible para ti, para que, máis tarde, no futuro 443 00:26:11,140 --> 00:26:13,020 vai saber o que está facendo. 444 00:26:13,020 --> 00:26:17,120 >> Polo tanto, neste caso, eu son proverbio é 3 superior a 2. 445 00:26:17,120 --> 00:26:18,270 Si, é. 446 00:26:18,270 --> 00:26:22,350 E do mesmo xeito, podo simplemente eliminar iso e dicir, é de 3 superior a 2 447 00:26:22,350 --> 00:26:23,440 onde a é igual a 2. 448 00:26:23,440 --> 00:26:26,230 E iso tamén é certo. 449 00:26:26,230 --> 00:26:26,730 Si? 450 00:26:26,730 --> 00:26:29,670 >> Audiencia: É vostede executar liña por liña? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN Tran: Si, eu son. 452 00:26:30,670 --> 00:26:33,900 Entón o que eu estou facendo aquí é tomar este texto document-- 453 00:26:33,900 --> 00:26:39,825 e que é grande sobre rstudio é que Só podo executar un short-- unha tecla de acceso. 454 00:26:39,825 --> 00:26:41,820 Entón, eu estou facendo Control-Intro. 455 00:26:41,820 --> 00:26:44,850 >> E entón, eu estou tomando o liña no documento de texto 456 00:26:44,850 --> 00:26:46,710 e, a continuación, colocar na consola. 457 00:26:46,710 --> 00:26:50,800 Entón aquí estou dicindo, bounded.compare e eu estou facendo Control-X. 458 00:26:50,800 --> 00:26:52,540 Entón, podo simplemente non funciona aquí tamén. 459 00:26:52,540 --> 00:26:54,920 E, entón, que vou pegar o liña e, a continuación, colocar-lo aquí. 460 00:26:54,920 --> 00:26:57,900 E, a continuación, do mesmo xeito, podo facer correr aquí. 461 00:26:57,900 --> 00:27:04,630 E entón el vai só manter a definición as liñas para a consola así. 462 00:27:04,630 --> 00:27:10,690 >> E se tamén en conta a caché claves están aí só como na sintaxe C. 463 00:27:10,690 --> 00:27:13,910 x-- o se a condición é tamén usará parénteses e despois 464 00:27:13,910 --> 00:27:15,350 pode usar outra cousa. 465 00:27:15,350 --> 00:27:17,496 Outra é else if. 466 00:27:17,496 --> 00:27:21,440 Polo tanto, esta será x é igual é igual a un, por exemplo. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 E entón eu vou volver algo aquí. 469 00:27:26,350 --> 00:27:29,490 >> Teña en conta que existen dous diferentes cousas aquí que está a suceder. 470 00:27:29,490 --> 00:27:34,360 Unha delas é que aquí estou especificando devolver o valor TRUE. 471 00:27:34,360 --> 00:27:35,950 Aquí eu só digo x. 472 00:27:35,950 --> 00:27:39,970 Entón R normalmente por defecto tomar o último arguments-- 473 00:27:39,970 --> 00:27:43,510 ou tomar a última liña do código, e que será o que é de retorno. 474 00:27:43,510 --> 00:27:46,920 Entón aquí é o mesmo cousa como facendo retorno x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> E só para mostrar a vostede. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 E, a continuación, que vai traballar só como aquel. 479 00:27:57,052 --> 00:27:58,260 Entón déixeme continuar con iso. 480 00:27:58,260 --> 00:28:00,630 >> Entón else if. 481 00:28:00,630 --> 00:28:04,060 E realmente, podo volver calquera cousa que me gustaría. 482 00:28:04,060 --> 00:28:06,680 Entón eu non ten sequera a retorno Booleans o tempo, 483 00:28:06,680 --> 00:28:08,410 Só podo volver outra cousa. 484 00:28:08,410 --> 00:28:10,670 Entón eu podo facer oso retorno. 485 00:28:10,670 --> 00:28:12,989 >> Polo tanto, se x é igual é igual a un, vai volver oso. 486 00:28:12,989 --> 00:28:14,530 Se non, vai voltar TRUE. 487 00:28:14,530 --> 00:28:19,310 Eu tamén podo facer un vector ou realmente calquera cousa. 488 00:28:19,310 --> 00:28:22,210 >> E normalmente en estaticamente linguas ingresaran, 489 00:28:22,210 --> 00:28:23,840 que tería que especificar un tipo aquí. 490 00:28:23,840 --> 00:28:25,750 E teña en conta que pode ser calquera cousa. 491 00:28:25,750 --> 00:28:32,400 E R é intelixente dabondo para que el só vai facer, e que vai funcionar ben. 492 00:28:32,400 --> 00:28:33,620 >> Entón déixeme definir iso. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh Sentímolo. 495 00:28:41,230 --> 00:28:44,336 Debe ser unha chaveta aquí. 496 00:28:44,336 --> 00:28:44,836 Aceptar. 497 00:28:44,836 --> 00:28:45,336 Con estilo. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Todo certo. 500 00:28:54,530 --> 00:28:58,250 Entón agora imos comparar 3 e un é igual a 3. 501 00:28:58,250 --> 00:29:01,860 Por iso, debe return-- yeah-- o valor oso. 502 00:29:01,860 --> 00:29:06,740 >> Entón, agora unha cousa máis xeral é como o que pasa con outras estruturas de datos. 503 00:29:06,740 --> 00:29:09,110 Entón tes esta función. 504 00:29:09,110 --> 00:29:15,360 Iso vai funcionar en calquera tipo de valor como 3 ou calquera numérico, 505 00:29:15,360 --> 00:29:17,500 noutras palabras, dúas veces. 506 00:29:17,500 --> 00:29:19,330 >> Pero o que dicir algo así como un vector. 507 00:29:19,330 --> 00:29:27,750 Entón, o que pasa se fazer-- polo que estou vai asignar val para, digamos, 4 a 6. 508 00:29:27,750 --> 00:29:31,640 Entón, se eu volver iso, este é un vector a partir do 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Agora imos ver que pasa se eu fai bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Entón, iso lle vai dar 15 1251. 512 00:29:42,450 --> 00:29:46,440 Polo tanto, noutras palabras, está dicindo se ollar para esta condición 513 00:29:46,440 --> 00:29:50,040 por iso di x é menor que un ou algo así. 514 00:29:50,040 --> 00:29:51,880 Polo tanto, este é lixeiramente confusa porque agora 515 00:29:51,880 --> 00:29:53,379 simplemente non sabe o que está a suceder. 516 00:29:53,379 --> 00:29:58,690 Entón eu creo que unha cousa que é realmente bo sobre só tentando depurar 517 00:29:58,690 --> 00:30:04,600 é que pode só facer val é maior que un e ver que pasa alí. 518 00:30:04,600 --> 00:30:09,720 >> Entón val-- un é, por defecto, 5 de xeito Imos facer Val superior a 5. 519 00:30:09,720 --> 00:30:14,280 Polo tanto, este é un vector FALSE FALSE TRUE. 520 00:30:14,280 --> 00:30:17,206 Agora, cando está olhando iso, que vai dicir se, 521 00:30:17,206 --> 00:30:20,080 e, a continuación, que vai dar-lle este é un vector de FALSE FALSE TRUE. 522 00:30:20,080 --> 00:30:23,450 >> Entón, cando pasar iso en R, R non ten idea do que está a facer. 523 00:30:23,450 --> 00:30:26,650 Porque espera que un único valor, o que é un valor booleano, e agora 524 00:30:26,650 --> 00:30:29,420 está dándolle un vector de booleanos. 525 00:30:29,420 --> 00:30:31,970 Entón, por defecto, R é só vai dicir que o diaño, 526 00:30:31,970 --> 00:30:35,440 Eu vou asumir que é vai levar o primeiro elemento aquí. 527 00:30:35,440 --> 00:30:38,320 Entón, eu estou indo a dizer-- vou asumir que iso é falso. 528 00:30:38,320 --> 00:30:40,890 Por iso, vai dicir Non, iso non é certo. 529 00:30:40,890 --> 00:30:45,246 >> Do mesmo xeito, vai val ser igual é igual a un. 530 00:30:45,246 --> 00:30:47,244 Non, desculpe 5. 531 00:30:47,244 --> 00:30:48,910 E tamén vai ser falso tamén. 532 00:30:48,910 --> 00:30:52,410 Entón, que vai dicir que non, Non é certo, ben polo que é 533 00:30:52,410 --> 00:30:53,680 volverá este último. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Polo tanto, este é tanto unha cousa boa ou mala cousa, dependendo de como velo. 536 00:31:01,360 --> 00:31:05,104 Porque cando está crear estas funcións, 537 00:31:05,104 --> 00:31:06,770 realmente non sabe o que está a suceder. 538 00:31:06,770 --> 00:31:10,210 Entón, ás veces ía querer un erro, ou que quere só unha advertencia. 539 00:31:10,210 --> 00:31:12,160 Neste caso, R non fai iso. 540 00:31:12,160 --> 00:31:14,300 Entón, é realmente ata vostede baseado fóra do que 541 00:31:14,300 --> 00:31:17,310 Pensas que a lingua debe facer neste caso 542 00:31:17,310 --> 00:31:22,920 se pasar nun vector de booleanos cando está facendo un se condición. 543 00:31:22,920 --> 00:31:31,733 >> Entón, imos dicir que tiña o orixinal un cos outros, se volver TRUE e está 544 00:31:31,733 --> 00:31:34,190 vai voltar FALSE. 545 00:31:34,190 --> 00:31:39,300 Polo tanto, unha forma de abstraerse isto é para dicir que eu 546 00:31:39,300 --> 00:31:41,530 Non precisa aínda esa cousa condicional. 547 00:31:41,530 --> 00:31:47,220 Outra cousa que podo facer é só retornando os propios valores. 548 00:31:47,220 --> 00:31:53,240 Entón, se observar, se Do Val é maior que 5, 549 00:31:53,240 --> 00:31:56,350 iso vai volver vector FALSE FALSE TRUE. 550 00:31:56,350 --> 00:31:58,850 >> Quizais iso é o que quere para bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Quere voltar un vector de booleanos en que compara cada un dos valores 552 00:32:02,940 --> 00:32:04,190 para si mesmos. 553 00:32:04,190 --> 00:32:11,165 Así, pode simplemente non bounded.compare función de x, un é igual a 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 E entón, en vez de fazê- esta outra condición se, 556 00:32:15,363 --> 00:32:21,430 Eu só vou volver x é maior que 5. 557 00:32:21,430 --> 00:32:23,620 Entón, se é verdade, entón vai voltar TRUE. 558 00:32:23,620 --> 00:32:26,830 E entón, se non é, é vai voltar FALSE. 559 00:32:26,830 --> 00:32:30,880 >> E iso vai funcionar para calquera destas estruturas. 560 00:32:30,880 --> 00:32:41,450 Entón podo bounded.compare c 1 6 ou 9 e entón eu vou dicir un é igual a 6, 561 00:32:41,450 --> 00:32:42,799 por exemplo. 562 00:32:42,799 --> 00:32:44,840 E entón el vai darlle o dereito booleana 563 00:32:44,840 --> 00:32:48,240 vector que está designado. 564 00:32:48,240 --> 00:32:50,660 >> Entón, eses son só funcións e, agora, déixeme só 565 00:32:50,660 --> 00:32:54,980 amosar-lle algúns recursos visuais interactivos. 566 00:32:54,980 --> 00:32:59,700 Eu non creo que eu realmente teño WiFi aquí, entón deixe-me ir adiante 567 00:32:59,700 --> 00:33:01,970 e ignorar esta creo. 568 00:33:01,970 --> 00:33:05,260 >> Pero unha cousa que é legal con todo, é que se só 569 00:33:05,260 --> 00:33:09,600 quere probar unha morea de diferentes comandos, datos 570 00:33:09,600 --> 00:33:13,320 hai unha morea de diferentes conxuntos de datos que xa están precargados no R. 571 00:33:13,320 --> 00:33:15,770 Entón, un deles é chamado o conxunto de datos do iris. 572 00:33:15,770 --> 00:33:18,910 Este é un dos máis coñecidos os de aprendizaxe de máquina. 573 00:33:18,910 --> 00:33:23,350 Normalmente só facer algún tipo de casos de proba para ver se o código execútase. 574 00:33:23,350 --> 00:33:27,520 Entón imos comprobar o que é iris. 575 00:33:27,520 --> 00:33:33,130 >> Entón, esa cousa está pasando para ser un cadro de datos. 576 00:33:33,130 --> 00:33:36,000 E é unha especie de tempo porque Eu só impreso vella. 577 00:33:36,000 --> 00:33:38,810 Está imprimindo a cousa toda. 578 00:33:38,810 --> 00:33:42,830 Por iso, ten todas estas diferentes nomes. 579 00:33:42,830 --> 00:33:45,505 Así vella é unha colección de flores diferentes. 580 00:33:45,505 --> 00:33:48,830 Neste caso, está dicindo -lle as especies do mesmo, 581 00:33:48,830 --> 00:33:54,760 todos estes diferentes anchos e a lonxitudes de sépalas e a pétalos. 582 00:33:54,760 --> 00:33:58,880 >> E así, normalmente, se quere imprimir vella, 583 00:33:58,880 --> 00:34:03,680 por exemplo, non quere telo facer todo isto, porque iso pode levar máis 584 00:34:03,680 --> 00:34:05,190 todo o seu consola. 585 00:34:05,190 --> 00:34:09,280 Entón, unha cousa que é realmente interesante é a función de cabeza. 586 00:34:09,280 --> 00:34:12,929 Entón, se acaba de facer a cabeza iris, que lle vai dar 587 00:34:12,929 --> 00:34:17,389 os primeiros cinco liñas ou seis anos, eu creo. 588 00:34:17,389 --> 00:34:19,909 E, a continuación ben de ti, pode só especificar aquí. 589 00:34:19,909 --> 00:34:22,914 Entón 20-- iso vai dar -lle as primeiras 20 liñas. 590 00:34:22,914 --> 00:34:24,830 E eu, en realidade, era unha especie sorprende que este 591 00:34:24,830 --> 00:34:28,770 deume seis entón deixe-me ir adiante e comprobar iris-- ou na cabeza, me desculpe. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 E aquí vai dar a documentación 594 00:34:34,960 --> 00:34:37,960 do que a cabeza de valor fai. 595 00:34:37,960 --> 00:34:40,839 Entón, ela retorna a primeira ou a última dun obxecto. 596 00:34:40,839 --> 00:34:42,630 E entón eu vou ollar os patróns. 597 00:34:42,630 --> 00:34:47,340 E, a continuación, el di que o default método de cabeza xe n é igual a 6L. 598 00:34:47,340 --> 00:34:50,620 Polo tanto, este devolve os primeiros seis elementos. 599 00:34:50,620 --> 00:34:55,050 E do mesmo xeito, se observar aquí, eu Non ten que especificar n é igual a 6. 600 00:34:55,050 --> 00:34:56,840 Por defecto, usa seis, eu creo. 601 00:34:56,840 --> 00:35:00,130 E entón, se eu queira especificar un determinado valor, entón eu podo ver iso tamén. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Entón ese é algúns comandos simples e aquí está outro que é apenas-- ben, 604 00:35:10,592 --> 00:35:12,550 I can-- esta é realmente un pouco máis complexa, 605 00:35:12,550 --> 00:35:17,130 pero iso só vai levar a clase de cada columna do conxunto de datos da vella. 606 00:35:17,130 --> 00:35:20,910 Entón, iso vai amosar o que cada un deles columnas son en termos dos seus tipos. 607 00:35:20,910 --> 00:35:23,665 Entón lonxitude sepal é numérico, width sepal é numérico. 608 00:35:23,665 --> 00:35:26,540 Todos estes valores son só numérico porque pode dicir a partir destes datos 609 00:35:26,540 --> 00:35:29,440 estruturar estes son todo vai numérico. 610 00:35:29,440 --> 00:35:34,310 >> E a columna Especies vai ser un factor. 611 00:35:34,310 --> 00:35:37,270 Entón, normalmente, podería pensar que isto é como unha cadea de caracteres. 612 00:35:37,270 --> 00:35:48,830 Pero, se acaba de facer irisSpecies, e entón eu vou facer de cabeza 5, 613 00:35:48,830 --> 00:35:51,820 e iso vai imprimir os primeiros cinco valores. 614 00:35:51,820 --> 00:35:54,150 >> E logo, teña en conta esta niveis. 615 00:35:54,150 --> 00:35:58,870 Polo tanto, este é dizendo-- esta é a forma do R de ter variables categóricas. 616 00:35:58,870 --> 00:36:03,765 Entón, en vez de só Tendo en cadeas de caracteres, 617 00:36:03,765 --> 00:36:06,740 el ten niveis especificando que estas cousas son. 618 00:36:06,740 --> 00:36:12,450 >> Entón, digamos que irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Entón, o que quere facer aquí é que eu son subsetting a esta columna Especies. 620 00:36:17,690 --> 00:36:21,480 Entón, iso leva a Especies columna e, a continuación, 621 00:36:21,480 --> 00:36:23,820 el indexa para obter o primeiro elemento. 622 00:36:23,820 --> 00:36:27,140 Polo tanto, este debe darlle setosa. 623 00:36:27,140 --> 00:36:28,710 E dálle tamén os niveis aquí. 624 00:36:28,710 --> 00:36:32,812 >> Entón, tamén se pode comparar isto para o personaxe setosa 625 00:36:32,812 --> 00:36:34,645 e iso non vai a ser verdade, porque unha 626 00:36:34,645 --> 00:36:37,940 é dun tipo diferente do que o outro. 627 00:36:37,940 --> 00:36:40,590 Ou eu creo que iso é verdade, porque R é máis intelixente do que iso. 628 00:36:40,590 --> 00:36:45,420 E mira para iso e, a continuación, di, quizais este sexa o que quere. 629 00:36:45,420 --> 00:36:51,860 Entón, que vai dicir que o personaxe cadea setosa é o mesmo como esta. 630 00:36:51,860 --> 00:37:01,290 E, a continuación, do mesmo xeito, pode tamén pode incorporarse estes como así por diante. 631 00:37:01,290 --> 00:37:05,580 >> Entón, iso é só unha especie de comandos rápidos do conxunto de datos. 632 00:37:05,580 --> 00:37:08,030 Entón aquí vai unha explotación de datos. 633 00:37:08,030 --> 00:37:11,360 Polo tanto, este é un pouco máis implicadas coa análise de datos. 634 00:37:11,360 --> 00:37:18,340 E este é eliminado dalgúns Bootcamp en R para Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Así biblioteca externa. 636 00:37:20,790 --> 00:37:24,880 Entón, eu estou indo a cargar nun biblioteca que se chama estranxeira. 637 00:37:24,880 --> 00:37:32,460 Entón, iso me vai dar read.dta así supoñer que eu teño ese conxunto de datos. 638 00:37:32,460 --> 00:37:39,000 Este é almacenado na actual directorio do meu consola funcionando. 639 00:37:39,000 --> 00:37:42,190 Entón imos ver o que o directorio de traballo é. 640 00:37:42,190 --> 00:37:44,620 >> Entón, aquí está o meu directorio de traballo. 641 00:37:44,620 --> 00:37:50,040 E a lectura de datos de puntos, esta cousa, está dicindo este ficheiro 642 00:37:50,040 --> 00:37:54,650 está situado no cartafol de datos de este directorio de traballo actual. 643 00:37:54,650 --> 00:38:00,520 E este non é read.dta un comando estándar. 644 00:38:00,520 --> 00:38:02,760 Eu creo que eu cargala no xa. 645 00:38:02,760 --> 00:38:04,750 IEI asumido eu cargueime iso no xa. 646 00:38:04,750 --> 00:38:08,115 >> Pero ata read.dta non vai para ser un comando estándar. 647 00:38:08,115 --> 00:38:11,550 E é por iso que vai ter para cargar nesta biblioteca package-- 648 00:38:11,550 --> 00:38:14,500 este paquete chamado estranxeira. 649 00:38:14,500 --> 00:38:16,690 E se non ten o paquete, eu creo 650 00:38:16,690 --> 00:38:19,180 estranxeira é un dos máis integrados. 651 00:38:19,180 --> 00:38:31,150 Se non, tamén se pode facer install.packages 652 00:38:31,150 --> 00:38:33,180 e iso vai instalar o paquete. 653 00:38:33,180 --> 00:38:36,878 E iso lle vai dar R. Uh, non. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 E entón eu só vou deixar iso porque eu xa teño. 656 00:38:43,140 --> 00:38:46,920 >> Pero o que é realmente agradable sobre R é que a xestión de paquetes 657 00:38:46,920 --> 00:38:48,510 sistema é moi elegante. 658 00:38:48,510 --> 00:38:52,470 Porque vai almacenar todo realmente moi ben para ti. 659 00:38:52,470 --> 00:38:59,780 Polo tanto, neste caso, está indo para almacenar Lo, creo eu, esta biblioteca aquí. 660 00:38:59,780 --> 00:39:02,390 >> Entón, cando quere instalar novos paquetes, 661 00:39:02,390 --> 00:39:04,980 é tan sinxelo como facendo install.packages 662 00:39:04,980 --> 00:39:07,500 e R gerenciará todos os paquetes para ti. 663 00:39:07,500 --> 00:39:12,900 Entón non ten que facer algo en Python, onde ten paquete externo 664 00:39:12,900 --> 00:39:15,330 xestores como papel Anaconda onde está 665 00:39:15,330 --> 00:39:18,310 doing-- de instalar paquetes fóra do Python 666 00:39:18,310 --> 00:39:20,940 e logo intentar executa-los ti mesmo. 667 00:39:20,940 --> 00:39:22,210 Polo tanto, esta é realmente bo xeito. 668 00:39:22,210 --> 00:39:25,590 >> E install.packages require internet. 669 00:39:25,590 --> 00:39:31,950 Lévao a partir dun servidor e do repositorio que 670 00:39:31,950 --> 00:39:33,960 recolle todo o paquetes chámase CRAN. 671 00:39:33,960 --> 00:39:40,690 E pode especificar que tipo de espello quere facer a descarga dos paquetes. 672 00:39:40,690 --> 00:39:43,420 >> Entón aquí estou tendo este conxunto de datos. 673 00:39:43,420 --> 00:39:46,240 Estou lendo o en utilizar esta función. 674 00:39:46,240 --> 00:39:49,360 Entón deixe-me ir adiante e facelo. 675 00:39:49,360 --> 00:39:52,900 >> Entón imos supor que ten ese conxunto de datos 676 00:39:52,900 --> 00:39:55,550 e non ten absolutamente ningunha idea o que é. 677 00:39:55,550 --> 00:39:58,560 E iso, en realidade, trata-se con bastante frecuencia na industria 678 00:39:58,560 --> 00:40:00,910 onde só ten eses toneladas e toneladas de cousas sucias 679 00:40:00,910 --> 00:40:02,890 e son incriblemente non marcado. 680 00:40:02,890 --> 00:40:06,380 Entón aquí eu teño esa dataset e eu non sei 681 00:40:06,380 --> 00:40:08,400 o que é así que eu son só mostrando para comprobar-la. 682 00:40:08,400 --> 00:40:10,620 >> Entón, eu vou facer de cabeza. 683 00:40:10,620 --> 00:40:14,190 Entón eu comprobar os seis primeiros columnas de que ese conxunto de datos é. 684 00:40:14,190 --> 00:40:21,730 Polo tanto, este é o estado, pres04, e logo todos estes diferentes tipo de columnas. 685 00:40:21,730 --> 00:40:25,612 E o que é interesante aquí, eu creo, é que 686 00:40:25,612 --> 00:40:27,945 diría que iso parece como unha especie de elección. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 E eu creo que só a partir de ollando para o ficheiro 689 00:40:32,190 --> 00:40:41,070 Nome Este é algún tipo de colección de datos sobre candidatos ou electores 690 00:40:41,070 --> 00:40:44,920 que votaron en presidentes específicas ou candidatos presidente 691 00:40:44,920 --> 00:40:46,550 para a elección de 2004. 692 00:40:46,550 --> 00:40:52,920 >> Entón aquí está valores 1, 2 Polo tanto, unha forma de almacenar 693 00:40:52,920 --> 00:40:56,540 os candidatos presidente son os seus nomes. 694 00:40:56,540 --> 00:40:59,780 Neste caso, parece que son só valores enteiros. 695 00:40:59,780 --> 00:41:04,030 Entón, 2004, era de Bush contra Kerry eu creo. 696 00:41:04,030 --> 00:41:09,010 E agora, imos dicir que só non sei se 1 corresponde ao Bush ou 2 697 00:41:09,010 --> 00:41:11,703 corresponde a Kerry ou e así por diante e así por diante, non? 698 00:41:11,703 --> 00:41:15,860 >> E esta é, só para min, un problema moi común. 699 00:41:15,860 --> 00:41:18,230 Entón, o que pode facer neste caso? 700 00:41:18,230 --> 00:41:20,000 Entón, imos comprobar todas esas outras cousas. 701 00:41:20,000 --> 00:41:22,790 >> estado, estou asumindo este vén de diferentes estados. 702 00:41:22,790 --> 00:41:25,100 partyid, renda. 703 00:41:25,100 --> 00:41:27,710 Vexamos partyid. 704 00:41:27,710 --> 00:41:32,800 Entón, talvez unha cousa que podes facer é mirar para cada unha das observacións 705 00:41:32,800 --> 00:41:36,250 que teñen un partyid do republicano ou demócrata ou algo así. 706 00:41:36,250 --> 00:41:38,170 Entón imos só ollar para o que é partyid. 707 00:41:38,170 --> 00:41:41,946 >> Entón, eu vou tomar dat e entón eu vou 708 00:41:41,946 --> 00:41:47,960 para facelo cifrão operador que fixen anteriormente 709 00:41:47,960 --> 00:41:50,770 e iso vai subconxunto para esa columna. 710 00:41:50,770 --> 00:41:57,760 E entón eu estou indo a cabeza esta en 20, só para ver o que isto parece. 711 00:41:57,760 --> 00:42:00,170 >> Polo tanto, este é só unha morea de axencias nacionais. 712 00:42:00,170 --> 00:42:02,800 Polo tanto, noutras palabras, ten falta de datos sobre estes faces. 713 00:42:02,800 --> 00:42:08,100 Pero tamén entender iso dat partyid é un factor 714 00:42:08,100 --> 00:42:10,030 de xeito que este dálle distintas categorías. 715 00:42:10,030 --> 00:42:14,170 Así, noutras palabras, pode tomar partyid Demócrata, republicano, independente, 716 00:42:14,170 --> 00:42:16,640 ou calquera outra cousa. 717 00:42:16,640 --> 00:42:23,940 >> Entón, imos adiante e imos ver cal delas é-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Entón, eu estou indo ao subconxunto para partyid e despois 719 00:42:28,480 --> 00:42:32,780 vexa cales son Demócrata, por exemplo. 720 00:42:32,780 --> 00:42:37,150 Isto vai darlle un valor booleano, unha enorme booleano de trues e FALSEs. 721 00:42:37,150 --> 00:42:41,630 >> E agora, imos dicir que quero ao subconxunto para estes faces. 722 00:42:41,630 --> 00:42:47,260 Entón, iso vai levar a miña dat e a calquera subconxunto observacións 723 00:42:47,260 --> 00:42:48,910 teñen iguais partyid iguala demócrata. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 E iso é moi longo, porque hai tantos deles. 726 00:42:55,180 --> 00:42:59,060 Entón, agora, eu estou indo a cabeza esta en 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> E, como observou, é igual a equals é interesante na medida en que está 729 00:43:11,270 --> 00:43:13,250 já-- tamén está incluíndo as axencias nacionais. 730 00:43:13,250 --> 00:43:19,010 Polo tanto, neste caso, aínda pode non chegar calquera información, porque agora ten AN 731 00:43:19,010 --> 00:43:22,650 e só quere ver cal dos observación corresponden ao Demócrata 732 00:43:22,650 --> 00:43:24,670 e non estes valores en falta si. 733 00:43:24,670 --> 00:43:27,680 Entón, como se librar deses NAS? 734 00:43:27,680 --> 00:43:36,410 >> Entón, aquí estou só usar o no meu cursor e logo, dicindo moverse. 735 00:43:36,410 --> 00:43:39,778 E entón aquí eu só vou dicir is.na datpartyid. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Polo tanto, este e e tomará dous vectores diferentes booleanas 738 00:43:52,720 --> 00:43:57,160 e dicir que vai ser TRUE e FALSE por exemplo. 739 00:43:57,160 --> 00:43:59,190 Por iso, vai facer este compoñente-wise. 740 00:43:59,190 --> 00:44:02,910 Entón aquí estou dicindo take o cadro de datos, subconxunto 741 00:44:02,910 --> 00:44:10,170 para aqueles que corresponden a demócrata, e eliminar calquera deles que non son NA. 742 00:44:10,170 --> 00:44:13,540 >> Polo tanto, este debe will-- darlle algo. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Veremos is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Imos tentar datpartyid is.na. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 E iso debe dar você-- sorry-- só un vector booleano. 749 00:44:45,290 --> 00:44:49,260 E entón, por que é moi longo, Estou indo ao subconxunto a 20. 750 00:44:49,260 --> 00:44:49,760 Aceptar. 751 00:44:49,760 --> 00:44:51,570 Polo tanto, debería funcionar. 752 00:44:51,570 --> 00:44:54,700 >> E este tamén será trues. 753 00:44:54,700 --> 00:45:01,830 Ah, o meu erro aquí é que I'm-- I usar C ++ e R alternativamente así que fago 754 00:45:01,830 --> 00:45:03,590 este erro o tempo. 755 00:45:03,590 --> 00:45:05,807 O operador e é en realidade, o que quere. 756 00:45:05,807 --> 00:45:08,140 Non quere usar dous ampersands, só un único. 757 00:45:08,140 --> 00:45:14,970 758 00:45:14,970 --> 00:45:17,010 Aceptar. 759 00:45:17,010 --> 00:45:18,140 >> Entón imos ver. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Entón, nós subsetted ao partyid onde están Demócrata 762 00:45:23,920 --> 00:45:25,300 e eles non están falta valores. 763 00:45:25,300 --> 00:45:27,690 E agora imos ollar para cales os que votaron a favor. 764 00:45:27,690 --> 00:45:31,530 Así, parece que a maioría deles votou 1. 765 00:45:31,530 --> 00:45:36,090 Entón, eu estou indo para adiante e dicir que é Kerry. 766 00:45:36,090 --> 00:45:39,507 >> E do mesmo xeito, pode tamén van para Republicano 767 00:45:39,507 --> 00:45:41,090 e, esperamos, iso debe darlle 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 É só unha morea de columnas diferentes. 770 00:45:51,770 --> 00:45:53,070 E, de feito, é 2. 771 00:45:53,070 --> 00:45:55,750 Entón partyid todo republicanos, a maioría deles está votando para 2. 772 00:45:55,750 --> 00:45:58,390 >> Así, parece que, só mirando para iso, 773 00:45:58,390 --> 00:46:00,600 Republicano será un very-- ou o partyid 774 00:46:00,600 --> 00:46:02,790 vai ser moi gran factor na determinación 775 00:46:02,790 --> 00:46:05,420 cal candidato son vai votar. 776 00:46:05,420 --> 00:46:07,120 E iso é obviamente certo en xeral. 777 00:46:07,120 --> 00:46:10,139 E este corresponde ao seu intuición, por suposto. 778 00:46:10,139 --> 00:46:11,930 Entón, parece que eu son correndo contra o tempo para que 779 00:46:11,930 --> 00:46:17,040 déixeme só debe ir adiante e mostrar algunhas imaxes rápidas. 780 00:46:17,040 --> 00:46:21,120 Entón aquí está algo que é lixeiramente máis complicada coa visualización. 781 00:46:21,120 --> 00:46:26,450 Polo tanto, neste caso, este é un moi simple análise de só comprobar o que 782 00:46:26,450 --> 00:46:28,500 o presidente da '04 é. 783 00:46:28,500 --> 00:46:33,920 >> Polo tanto, neste caso, digamos que quería responder a esta pregunta. 784 00:46:33,920 --> 00:46:38,540 Entón imos supor que quería saber a votación comportamento na elección presidente 2004 785 00:46:38,540 --> 00:46:41,170 e como iso varía segundo a raza. 786 00:46:41,170 --> 00:46:44,380 Así, non só que quere ver o comportamento de voto, 787 00:46:44,380 --> 00:46:47,860 pero quere subconxunto de cada raza e tipo de resumir iso. 788 00:46:47,860 --> 00:46:50,770 E só se pode dizer- por este complexo notación 789 00:46:50,770 --> 00:46:52,580 que esta é unha especie de obter nebuloso. 790 00:46:52,580 --> 00:46:56,390 >> Entón, un dos máis avanzados R paquetes que é tamén unha especie de recente 791 00:46:56,390 --> 00:47:00,070 chámase dplyr. 792 00:47:00,070 --> 00:47:03,060 Por iso, é este aquí. 793 00:47:03,060 --> 00:47:08,080 E ggplot2 ggg-- é só un bo forma de facer as mellores visualizacións 794 00:47:08,080 --> 00:47:09,400 do que a un embutido. 795 00:47:09,400 --> 00:47:11,108 >> Entón, eu estou indo a cargar estas dúas bibliotecas. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 E entón, eu estou indo a ir adiante e executar este comando. 798 00:47:16,950 --> 00:47:19,050 Pode só tratar isto como unha caixa negra. 799 00:47:19,050 --> 00:47:23,460 >> O que está pasando é que esta tubo operador está pasando neste argumento 800 00:47:23,460 --> 00:47:24,110 en aquí. 801 00:47:24,110 --> 00:47:28,070 Entón, eu estou dicindo por grupo dat raza e entón presidente 04. 802 00:47:28,070 --> 00:47:31,530 E entón, todos estes outros comandos está filtrando e, a continuación, resumindo 803 00:47:31,530 --> 00:47:34,081 onde eu estou facendo conta e entón eu estou trazando-lo aquí. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 Aceptar legal. 806 00:47:42,500 --> 00:47:44,620 Entón, imos adiante e ver o que isto parece. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Entón, o que está a suceder aquí é que eu só Plot cada unha das razas e, a continuación, 809 00:47:57,290 --> 00:47:59,670 cales os que votaron a favor. 810 00:47:59,670 --> 00:48:03,492 E estes dous diferentes Os valores corresponden a 2 e 1. 811 00:48:03,492 --> 00:48:05,325 Se quere ser máis elegante, tamén se pode 812 00:48:05,325 --> 00:48:11,770 só especificar que 2 é Kerry-- ou 2 é de Bush, e, a continuación, un é Kerry. 813 00:48:11,770 --> 00:48:13,700 E tamén pode ter que na súa lenda. 814 00:48:13,700 --> 00:48:17,410 >> E tamén pode dividir estes gráficos de barras. 815 00:48:17,410 --> 00:48:19,480 Porque unha cousa é que, se observar, 816 00:48:19,480 --> 00:48:24,560 este non é moi fácil de identificar cal destes dous valores son maiores. 817 00:48:24,560 --> 00:48:27,920 Entón, unha cousa que quere facer é aproveitar esta zona azul 818 00:48:27,920 --> 00:48:31,855 e só move-o aquí para que pode comparar os dous lado a lado. 819 00:48:31,855 --> 00:48:34,480 E eu creo que é algo que eu Non ten tempo para facer agora, 820 00:48:34,480 --> 00:48:36,660 pero iso tamén é moi fácil de facer. 821 00:48:36,660 --> 00:48:40,310 Pode só ollar para as páxinas do manual de ggplot. 822 00:48:40,310 --> 00:48:47,170 Así, pode simplemente non ggplot como que e ler nesta páxina home. 823 00:48:47,170 --> 00:48:51,920 >> Entón déixenme só rapidamente amosar-lle algunhas cousas legais. 824 00:48:51,920 --> 00:48:57,610 Imos adiante e ir a-- só unha aplicación de aprendizaxe de máquina. 825 00:48:57,610 --> 00:49:02,450 Entón, digamos que temos estes tres paquetes así que eu estou indo a cargalos. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Entón, iso só imprime algúns información cando carguei na cousa. 828 00:49:09,170 --> 00:49:15,220 Entón, eu estou dicindo isto read.csv, este conxunto de datos, e agora 829 00:49:15,220 --> 00:49:18,940 Eu estou indo a ir adiante e ollar e ver o que ten dentro deste conxunto de datos. 830 00:49:18,940 --> 00:49:22,080 >> Así, as primeiras 20 observacións. 831 00:49:22,080 --> 00:49:27,190 Entón, eu só teño X1, X2, e Y. Por iso, Parece que unha morea deses valores 832 00:49:27,190 --> 00:49:31,640 están varios de quizais 20 a 80 ou máis. 833 00:49:31,640 --> 00:49:37,700 E, a continuación, do mesmo xeito para X2 e despois Y esta parece ser etiquetas de 0 e 1. 834 00:49:37,700 --> 00:49:49,500 >> Para comprobalo, podo só facer X1 datos de resumo. 835 00:49:49,500 --> 00:49:51,660 E, a continuación, do mesmo xeito para todas estas outras columnas. 836 00:49:51,660 --> 00:49:55,300 Entón resumo é unha forma rápida de só amosando valores rápidos. 837 00:49:55,300 --> 00:49:56,330 Oh, desculpe. 838 00:49:56,330 --> 00:49:58,440 Este debe ser Y. 839 00:49:58,440 --> 00:50:03,420 >> Polo tanto, neste caso, dá a quantiles, medianas, maxes tamén. 840 00:50:03,420 --> 00:50:07,130 Neste caso, dataY, verás que só vai ser 0 e 1. 841 00:50:07,130 --> 00:50:10,100 Ademais, a media está dicindo 0,6, só significa que 842 00:50:10,100 --> 00:50:13,380 Parece que eu teño máis que 1s 0s. 843 00:50:13,380 --> 00:50:16,160 >> Entón deixe-me ir adiante e amosar o que iso parece. 844 00:50:16,160 --> 00:50:17,470 Entón, eu estou indo só para trazar este. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Imos ver como limpar iso. 847 00:50:24,636 --> 00:50:30,492 848 00:50:30,492 --> 00:50:31,468 Oh Aceptar. 849 00:50:31,468 --> 00:50:35,840 850 00:50:35,840 --> 00:50:36,340 Aceptar. 851 00:50:36,340 --> 00:50:37,590 >> Polo tanto, este é o que parece. 852 00:50:37,590 --> 00:50:46,310 Así, parece que os amarelos I especificados como 0, e despois vermello I especificar como 1s. 853 00:50:46,310 --> 00:50:52,190 Entón, aquí parece que puntos de etiqueta e que 854 00:50:52,190 --> 00:50:56,410 Parece que só quería un pouco tipo de agrupación sobre este asunto. 855 00:50:56,410 --> 00:51:01,020 >> E deixe-me ir adiante e amosar vostede algunhas destas funcións embutidas. 856 00:51:01,020 --> 00:51:03,580 Entón aquí é lm. 857 00:51:03,580 --> 00:51:06,060 Polo tanto, esta é só a tentar para axustar unha liña a esta. 858 00:51:06,060 --> 00:51:08,640 Entón, cal é a mellor maneira que eu poida axustar unha liña tal 859 00:51:08,640 --> 00:51:14,020 que será mellor separar este tipo de clustering. 860 00:51:14,020 --> 00:51:21,790 E preferentemente, pode só ver que eu simplemente executar todos estes comandos 861 00:51:21,790 --> 00:51:25,450 e logo, eu vou adiante e engadir a liña. 862 00:51:25,450 --> 00:51:28,970 >> Polo tanto, este parece ser o mellor palpite. 863 00:51:28,970 --> 00:51:34,150 É tomar o mellor que minimiza o erro no intento de encaixar esta liña. 864 00:51:34,150 --> 00:51:40,000 Obviamente, isto parece medio bo, pero non é o mellor. 865 00:51:40,000 --> 00:51:43,130 E os modelos lineais, en xeral, van ser 866 00:51:43,130 --> 00:51:46,811 realmente grande para a teoría e só unha especie dos fundamentos de construción da máquina 867 00:51:46,811 --> 00:51:47,310 aprendendo. 868 00:51:47,310 --> 00:51:50,330 Pero, na práctica, vai quero facer algo máis xeral. 869 00:51:50,330 --> 00:51:54,280 >> Así, pode só tentar executar algo chamado unha rede neuronal. 870 00:51:54,280 --> 00:51:57,110 Esas cousas son cada vez máis común. 871 00:51:57,110 --> 00:52:00,530 E eles simplemente traballar fantástica para grandes conxuntos de datos. 872 00:52:00,530 --> 00:52:07,080 Polo tanto, neste caso, só have-- imos see-- temos nrow. 873 00:52:07,080 --> 00:52:09,010 Entón nrow está só dicindo número de liñas. 874 00:52:09,010 --> 00:52:11,790 Polo tanto, neste caso, eu Ten 100 observacións. 875 00:52:11,790 --> 00:52:15,010 >> Entón deixe-me ir adiante e facer unha rede neuronal. 876 00:52:15,010 --> 00:52:18,620 Entón, iso é moi bo porque podo só dicir nnet 877 00:52:18,620 --> 00:52:21,767 e entón eu estou regredindo Y. Entón o Y é aquela columna. 878 00:52:21,767 --> 00:52:23,850 E entón que a regresión no as outras dúas variables. 879 00:52:23,850 --> 00:52:27,360 Polo tanto, este é máis curto notación para X1 e X2. 880 00:52:27,360 --> 00:52:29,741 >> Entón, imos adiante e executar este. 881 00:52:29,741 --> 00:52:30,240 Oh, desculpe. 882 00:52:30,240 --> 00:52:32,260 Necesito realizar esa cousa toda. 883 00:52:32,260 --> 00:52:37,500 E esta é só a impresión de notación para a rapidez ou non rapidamente el 884 00:52:37,500 --> 00:52:38,460 converxer. 885 00:52:38,460 --> 00:52:41,420 Polo tanto, parece que fixo converxer. 886 00:52:41,420 --> 00:52:44,970 Entón deixe-me ir adiante e de impresión o que iso parece. 887 00:52:44,970 --> 00:52:51,260 >> Vexa aquí a foto e aquí é un contorno amosando o quão ben el encaixa. 888 00:52:51,260 --> 00:52:56,380 E este é apenas-- verás este que isto é moi, moi bo. 889 00:52:56,380 --> 00:52:59,400 Pode ata ser overfitting, pero pode tamén 890 00:52:59,400 --> 00:53:03,390 son responsables de que con outro técnicas como a validación cruzada. 891 00:53:03,390 --> 00:53:06,180 E estes tamén son construídas en R. 892 00:53:06,180 --> 00:53:09,170 >> E deixe-me amosar-lle apoiar máquina vector. 893 00:53:09,170 --> 00:53:12,470 Esta é outra realidade común técnica en aprendizaxe de máquina. 894 00:53:12,470 --> 00:53:18,550 É moi semellante aos modelos lineais, pero usa o que se chama un método de núcleo. 895 00:53:18,550 --> 00:53:22,790 E imos ver como ben que fai. 896 00:53:22,790 --> 00:53:26,430 Así, esta é moi semellante á forma como ben unha rede neuronal desempeña, 897 00:53:26,430 --> 00:53:27,900 pero é moito máis suave. 898 00:53:27,900 --> 00:53:35,740 E esta é baseado fóra de what-- como SVMs traballo. 899 00:53:35,740 --> 00:53:40,250 >> Polo tanto, esta é só unha moi resumo rápido dalgunhas 900 00:53:40,250 --> 00:53:43,822 das funcións internas que pode facer e tamén un pouco da explotación de datos. 901 00:53:43,822 --> 00:53:45,905 Entón deixe-me ir adiante e volver para os diapositivas. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Entón, obviamente, este é non moi ampla. 904 00:53:53,670 --> 00:53:57,140 E iso é realmente só un teaser mostrando-lle o que realmente pode facer en R. 905 00:53:57,140 --> 00:53:59,100 Entón, se quere só de para saber máis, aquí 906 00:53:59,100 --> 00:54:01,210 son unha banda de diferentes recursos. 907 00:54:01,210 --> 00:54:06,890 >> Entón, se desexa libros didácticos ou está só lle gustaba de ler cousas en liña, 908 00:54:06,890 --> 00:54:09,670 entón que é un fantástico un por Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 que tamén creou todos estes paquetes moi legal. 910 00:54:13,010 --> 00:54:17,420 Se che gusta de vídeos, a continuación, Berkeley ten un Bootcamp incrible 911 00:54:17,420 --> 00:54:21,060 iso é several-- ese é o tipo de lonxitude. 912 00:54:21,060 --> 00:54:24,210 E vai te ensinar case todo o que quere saber sobre R. 913 00:54:24,210 --> 00:54:27,770 >> E do mesmo xeito, non hai Codeacademy e todas estas outro tipo 914 00:54:27,770 --> 00:54:29,414 sitios de interactivos. 915 00:54:29,414 --> 00:54:31,580 Eles están recibindo common-- cada vez máis común. 916 00:54:31,580 --> 00:54:33,749 Entón iso é moi semellante ao Codeacademy. 917 00:54:33,749 --> 00:54:35,790 E, finalmente, se acaba de quere comunitario e axudar, 918 00:54:35,790 --> 00:54:38,800 estes son unha banda de cousas que podes ir. 919 00:54:38,800 --> 00:54:40,880 Obviamente, aínda usar listas de correo, só 920 00:54:40,880 --> 00:54:44,860 como case todos os outros comunidade linguaxe de programación. 921 00:54:44,860 --> 00:54:47,880 E #rstats, este é nosa comunidade Twitter. 922 00:54:47,880 --> 00:54:49,580 Isto é bastante común. 923 00:54:49,580 --> 00:54:50,850 E entón o usuario! 924 00:54:50,850 --> 00:54:52,340 É só a nosa conferencia. 925 00:54:52,340 --> 00:54:55,390 >> E despois, claro, pode usar todas esas outras cousas Q & A, 926 00:54:55,390 --> 00:54:57,680 como Stack overflow, Google, e, a continuación, GitHub. 927 00:54:57,680 --> 00:55:00,490 Porque a maioría destes paquetes e un lote da comunidade 928 00:55:00,490 --> 00:55:03,420 será centrada en torno a desenvolver código porque é de código aberto. 929 00:55:03,420 --> 00:55:05,856 E iso é só moi bo no GitHub. 930 00:55:05,856 --> 00:55:08,730 E, finalmente, pode contactar-me se só ten algunha preguntas rápidas. 931 00:55:08,730 --> 00:55:13,530 Así, pode me atopar en Twitter aquí, meu sitio, e só o meu e-mail. 932 00:55:13,530 --> 00:55:17,840 Polo tanto, esperamos, que era something-- só un teaser curto 933 00:55:17,840 --> 00:55:20,900 que R é realmente capaz de facer. 934 00:55:20,900 --> 00:55:23,990 E espero que, só confía esas tres conexións 935 00:55:23,990 --> 00:55:25,760 e mira o que pode facer máis. 936 00:55:25,760 --> 00:55:28,130 E eu creo que é exactamente sobre iso. 937 00:55:28,130 --> 00:55:28,630 Grazas. 938 00:55:28,630 --> 00:55:30,780 >> [Aplausos] 939 00:55:30,780 --> 00:55:31,968