1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [REPRODUCCIÓN DE MÚSICA] 3 00:00:09,800 --> 00:00:13,014 4 00:00:13,014 --> 00:00:13,680 DUSTIN TRAN: Hola. 5 00:00:13,680 --> 00:00:14,980 Dustin de mi nombre. 6 00:00:14,980 --> 00:00:18,419 Así que voy a presentaré Análisis de datos en R. 7 00:00:18,419 --> 00:00:19,710 Sólo un poco sobre mí. 8 00:00:19,710 --> 00:00:24,320 Actualmente soy un estudiante graduado en las Ciencias de la Ingeniería y Aplicadas. 9 00:00:24,320 --> 00:00:28,330 Yo estudio una intersección de aprendizaje automático y estadísticas 10 00:00:28,330 --> 00:00:31,375 Así, el análisis de datos en R es realmente fundamental para lo 11 00:00:31,375 --> 00:00:33,790 Lo hago a diario. 12 00:00:33,790 --> 00:00:35,710 >> Y R es especialmente bueno para el análisis de datos 13 00:00:35,710 --> 00:00:39,310 porque es muy bueno para la creación de prototipos. 14 00:00:39,310 --> 00:00:43,590 Y por lo general, cuando estás haciendo algún tipo de análisis de datos, muchos de los problemas 15 00:00:43,590 --> 00:00:44,920 van a cognitiva. 16 00:00:44,920 --> 00:00:48,700 Y por lo que sólo quieren tener la muy buena lenguaje que 17 00:00:48,700 --> 00:00:53,770 es sólo bueno para hacer funciones incorporadas, en oposición 18 00:00:53,770 --> 00:00:57,430 a tener que lidiar con las cosas de bajo nivel. 19 00:00:57,430 --> 00:01:01,040 Así que en el principio, yo sólo voy para introducir lo que es R, ¿por qué 20 00:01:01,040 --> 00:01:04,540 que desea utilizar, y luego ir por encima en alguna demostración, 21 00:01:04,540 --> 00:01:07,060 y sólo tiene que ir de allí. 22 00:01:07,060 --> 00:01:08,150 >> Entonces, ¿qué es R? 23 00:01:08,150 --> 00:01:11,180 R es sólo un lenguaje desarrollado para el cálculo estadístico 24 00:01:11,180 --> 00:01:12,450 y la visualización. 25 00:01:12,450 --> 00:01:16,000 Lo que esto significa es que es un lenguaje muy excelente 26 00:01:16,000 --> 00:01:22,400 para cualquier tipo de cosa que se ocupa de incertidumbre o la visualización de datos. 27 00:01:22,400 --> 00:01:24,850 Así que tienes todos estos distribuciones de probabilidad. 28 00:01:24,850 --> 00:01:27,140 No van a ser funciones incorporadas. 29 00:01:27,140 --> 00:01:31,650 También tendrás excelente conspirar paquetes. 30 00:01:31,650 --> 00:01:34,110 >> Python es otro que compiten idioma para datos. 31 00:01:34,110 --> 00:01:40,020 Y una cosa que me parece que R es mucho mejor es la visualización. 32 00:01:40,020 --> 00:01:45,200 Así que lo que usted verá en la demo como así es sólo un lenguaje muy intuitivo 33 00:01:45,200 --> 00:01:48,050 que sólo funciona extremadamente bien. 34 00:01:48,050 --> 00:01:53,140 También es libre y de código abierto, como es otro buen lenguaje supongo. 35 00:01:53,140 --> 00:01:55,440 >> Y aquí, un montón de poco palabras clave lanzado en usted. 36 00:01:55,440 --> 00:02:00,450 Es dinámico, es decir, si tiene una tipo específico asignado a un objeto 37 00:02:00,450 --> 00:02:02,025 de lo que sólo va a cambiar sobre la marcha. 38 00:02:02,025 --> 00:02:05,670 Es perezoso, así que es inteligente acerca de cómo lo hace cálculos. 39 00:02:05,670 --> 00:02:12,250 Funcionales, lo que realmente puede funcionar con sede fuera de funciones, para anything-- 40 00:02:12,250 --> 00:02:16,910 cualquier tipo de manipulación que eres haciendo, se basa fuera funciones. 41 00:02:16,910 --> 00:02:20,162 >> Así operadores binarios, por ejemplo, son funciones intrínsecamente justo. 42 00:02:20,162 --> 00:02:21,870 Y todo lo que que vas a hacer es 43 00:02:21,870 --> 00:02:24,690 va a ejecutar fuera de sí mismo funciones. 44 00:02:24,690 --> 00:02:27,140 Y entonces orientado a objetos también. 45 00:02:27,140 --> 00:02:30,930 >> Así que aquí es una parcela XKCD. 46 00:02:30,930 --> 00:02:34,350 No sólo porque me siento como XKCD es fundamental para cualquier tipo 47 00:02:34,350 --> 00:02:37,770 de presentación, sino porque Siento que esto realmente 48 00:02:37,770 --> 00:02:42,160 martillos el punto de que una gran parte del momento en el que usted está haciendo algún tipo de datos 49 00:02:42,160 --> 00:02:46,570 análisis, el problema no es tanto la rapidez con que se ejecuta, 50 00:02:46,570 --> 00:02:49,850 pero ¿cuánto tiempo se va a le llevará a programar la tarea. 51 00:02:49,850 --> 00:02:54,112 Así que aquí es sólo analizar si estrategia a o b es más eficiente. 52 00:02:54,112 --> 00:02:55,820 Esto va a ser algo que eres 53 00:02:55,820 --> 00:02:58,290 va a tratar mucho con en tipo de lenguajes de bajo nivel 54 00:02:58,290 --> 00:03:03,440 donde usted está tratando con faltas seg, asignación de memoria, inicializaciones, 55 00:03:03,440 --> 00:03:05,270 incluso haciendo las funciones incorporadas. 56 00:03:05,270 --> 00:03:09,920 Y esto es manejado muy, muy elegante en R. 57 00:03:09,920 --> 00:03:12,839 >> Así que para martillar esta punto, el mayor cuello de botella 58 00:03:12,839 --> 00:03:13,880 va a ser cognitivo. 59 00:03:13,880 --> 00:03:17,341 Así, el análisis de datos es un problema muy difícil. 60 00:03:17,341 --> 00:03:19,340 Ya sea que usted está haciendo aprendizaje automático o eres 61 00:03:19,340 --> 00:03:22,550 haciendo sólo una especie de exploración de datos básicos, 62 00:03:22,550 --> 00:03:25,290 usted no quiere tener a tomar un documento 63 00:03:25,290 --> 00:03:27,440 y luego compilar algo cada vez que 64 00:03:27,440 --> 00:03:31,010 quiere ver lo que una columna se parece, lo particular, las entradas en una matriz 65 00:03:31,010 --> 00:03:32,195 parece. 66 00:03:32,195 --> 00:03:34,320 Así que sólo quiero tener alguna de las interfaces realmente agradable 67 00:03:34,320 --> 00:03:37,740 puede ejecutar una función simple que los índices a lo 68 00:03:37,740 --> 00:03:41,870 desea y sólo ejecuta desde allí. 69 00:03:41,870 --> 00:03:44,190 Y necesitas dominio lenguajes específicos para ello. 70 00:03:44,190 --> 00:03:51,750 Y R realmente le ayudará a definir el problema y resolverlo de esta manera. 71 00:03:51,750 --> 00:03:58,690 >> Así que aquí es una muestra de programación trama popularidad del R como se ha ido con el tiempo. 72 00:03:58,690 --> 00:04:04,060 Así como usted puede ver, como 2013 o por lo que sólo volado enormemente. 73 00:04:04,060 --> 00:04:09,570 Y esto ha sido sólo por eso gran tendencia en la industria de la tecnología 74 00:04:09,570 --> 00:04:10,590 datos sobre grandes. 75 00:04:10,590 --> 00:04:13,010 Además, no sólo la tecnología industria, pero en realidad 76 00:04:13,010 --> 00:04:16,490 cualquier que- industria porque muchas de las industrias 77 00:04:16,490 --> 00:04:20,589 son una especie de fundamental tratando de resolver estos problemas. 78 00:04:20,589 --> 00:04:24,590 Y por lo general, se puede tener un poco de buena forma de medir estos problemas 79 00:04:24,590 --> 00:04:29,720 o incluso la definición de ellos o resolverlos utilizando los datos. 80 00:04:29,720 --> 00:04:35,430 Así que creo que en este momento R es el 11 más popular lenguaje de TIOBE 81 00:04:35,430 --> 00:04:38,200 y ha estado creciendo desde entonces. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Así que aquí está un poco más características de R. Tiene 84 00:04:43,080 --> 00:04:46,900 un enorme número de paquetes y por todas estas cosas diferentes. 85 00:04:46,900 --> 00:04:52,470 Así que cada vez que tenga un cierto problema, la mayoría 86 00:04:52,470 --> 00:04:55,060 el tiempo de R tendrá esa función para usted. 87 00:04:55,060 --> 00:04:58,520 Así que si usted quiere construir una especie de máquina 88 00:04:58,520 --> 00:05:02,770 algoritmo de aprendizaje llamado Random Forest o árboles de decisión, 89 00:05:02,770 --> 00:05:07,530 o incluso tratando de tomar la media de una función o cualquiera de estas cosas, 90 00:05:07,530 --> 00:05:10,000 R tendrá que. 91 00:05:10,000 --> 00:05:14,190 >> Y si lo haces te importa optimización, una cosa que es común 92 00:05:14,190 --> 00:05:17,430 es que después de que estés prototipos terminado algún tipo de lenguaje de alto nivel, 93 00:05:17,430 --> 00:05:19,810 usted tendrá que tirar en-- Usted acaba de puerto que más del 94 00:05:19,810 --> 00:05:21,550 a un lenguaje de bajo nivel. 95 00:05:21,550 --> 00:05:26,090 Lo bueno de R es que una vez que estás hecho de prototipos, puede ejecutar C ++, 96 00:05:26,090 --> 00:05:29,510 o Fortran, o cualquiera de estos los de nivel inferior directamente en R. 97 00:05:29,510 --> 00:05:32,320 Así que esa es una realidad característica fresca sobre R, 98 00:05:32,320 --> 00:05:35,930 si realmente se preocupan por el punto de optimización. 99 00:05:35,930 --> 00:05:39,490 >> Y también es muy bueno para visualizaciones web. 100 00:05:39,490 --> 00:05:43,530 Así D3.js, por ejemplo, es Supongo otro seminario 101 00:05:43,530 --> 00:05:45,130 que presentamos hoy. 102 00:05:45,130 --> 00:05:48,510 Y esto es realmente impresionante para haciendo visualizaciones interactivas. 103 00:05:48,510 --> 00:05:54,460 Y D3.js supone que tiene algún tipo de datos que se pintarán 104 00:05:54,460 --> 00:05:58,080 y R es una gran manera de ser capaz de hacer el análisis de los datos antes de exportarlo 105 00:05:58,080 --> 00:06:04,220 a D3.js o simplemente correr Comandos D3.js en sí mismo R, 106 00:06:04,220 --> 00:06:08,240 así como todos estos otras bibliotecas también. 107 00:06:08,240 --> 00:06:13,041 >> Así que eso fue sólo la introducción de lo que es R y por las que podría usarlo. 108 00:06:13,041 --> 00:06:14,790 Así que espero, tengo usted convencido de algo 109 00:06:14,790 --> 00:06:18,460 acerca tratando de ver lo que se siente. 110 00:06:18,460 --> 00:06:23,930 Así que voy a seguir adelante y pasar por algunos fundamentos sobre los objetos R 111 00:06:23,930 --> 00:06:26,150 y lo que realmente se puede hacer. 112 00:06:26,150 --> 00:06:29,690 >> Así que aquí es sólo una montón de opciones matemáticas. 113 00:06:29,690 --> 00:06:35,000 Así que dices you're-- desea construir mismo idioma y lo que desea 114 00:06:35,000 --> 00:06:38,080 tener un montón de diferentes herramientas. 115 00:06:38,080 --> 00:06:42,520 Cualquier tipo de operación que usted piensa que le queremos es más o menos va a estar en R. 116 00:06:42,520 --> 00:06:44,150 >> Así que aquí es 2 más 2. 117 00:06:44,150 --> 00:06:46,090 Aquí es 2 veces pi. 118 00:06:46,090 --> 00:06:51,870 R tiene un montón de constantes integradas que va a utilizar con frecuencia como pi, e. 119 00:06:51,870 --> 00:06:56,230 >> Y entonces, aquí es 7 más runif, por lo runif de 1. 120 00:06:56,230 --> 00:07:02,450 Esta es una función que es genera uno aleatoria uniforme de 0 a 1. 121 00:07:02,450 --> 00:07:04,400 Y luego está 3 a la potencia de 4. 122 00:07:04,400 --> 00:07:06,430 Hay raíces cuadradas. 123 00:07:06,430 --> 00:07:07,270 >> Hay registro. 124 00:07:07,270 --> 00:07:14,500 Así que ingrese hará de base exponencial por sí mismo. 125 00:07:14,500 --> 00:07:18,337 Y luego, si se especifica una base, a continuación, usted puede hacer lo base que desee. 126 00:07:18,337 --> 00:07:19,920 Y entonces aquí hay algunos otros comandos. 127 00:07:19,920 --> 00:07:22,180 Así que tienes 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Entonces usted tiene el resto. 129 00:07:24,910 --> 00:07:27,110 Entonces usted tiene científica notación si también 130 00:07:27,110 --> 00:07:34,060 querer hacer más justo y las cosas más complicadas. 131 00:07:34,060 --> 00:07:37,320 >> Así que aquí está la asignación. 132 00:07:37,320 --> 00:07:40,830 Asignaciones tan típicos en R se realiza con una flecha 133 00:07:40,830 --> 00:07:43,440 por lo que es menos y luego el guión. 134 00:07:43,440 --> 00:07:47,250 Así que aquí estoy asignando 3 al val variable. 135 00:07:47,250 --> 00:07:50,160 >> Y luego estoy imprimiendo val y luego imprime tres. 136 00:07:50,160 --> 00:07:53,920 Por defecto en I intérprete, que imprimirá las cosas para usted 137 00:07:53,920 --> 00:07:57,280 por lo que no tiene que especificar imprimir un val cualquier momento que desee imprimir algo. 138 00:07:57,280 --> 00:08:00,200 Usted sólo puede hacer val y entonces va a hacer eso por usted. 139 00:08:00,200 --> 00:08:04,380 >> Además, se puede usar es igual técnicamente como un operador de asignación. 140 00:08:04,380 --> 00:08:07,190 Hay sutilezas ligeras entre el uso de la flecha 141 00:08:07,190 --> 00:08:10,730 operador y los iguales operador de las asignaciones. 142 00:08:10,730 --> 00:08:15,470 Mayormente por convención, todo el mundo se acaba de utilizar el operador flecha. 143 00:08:15,470 --> 00:08:21,850 >> Y aquí, estoy asignando este notación oblicua llama 1 de colon 6. 144 00:08:21,850 --> 00:08:26,010 Esto genera un vector de 1 a 6. 145 00:08:26,010 --> 00:08:29,350 Y esto realmente agradable porque entonces que acaba de asignar el vector de val 146 00:08:29,350 --> 00:08:34,270 y que funciona por sí mismo. 147 00:08:34,270 --> 00:08:37,799 >> Así que esto ya está pasando de un single-- un dato muy intuitivo 148 00:08:37,799 --> 00:08:41,070 estructura de sólo un doble de algún tipo de tipo en un vector 149 00:08:41,070 --> 00:08:45,670 y que recogerá todos los valores escalares para usted. 150 00:08:45,670 --> 00:08:50,770 Así que después de pasar de escalar, que tener objetos R y este es un vector. 151 00:08:50,770 --> 00:08:55,610 Un vector es cualquier tipo de colección del mismo tipo. 152 00:08:55,610 --> 00:08:58,150 Así que aquí hay un montón de vectores. 153 00:08:58,150 --> 00:08:59,800 >> Así que esto es numérico. 154 00:08:59,800 --> 00:09:02,440 Numérico es manera de decir el doble de R. 155 00:09:02,440 --> 00:09:07,390 Y así, de forma predeterminada, cualquier número será un doble. 156 00:09:07,390 --> 00:09:13,150 >> Así que si usted tiene c de 1.1, 3, 5.7 negativo, el c es una función. 157 00:09:13,150 --> 00:09:16,760 Este concatena los tres números en un vector. 158 00:09:16,760 --> 00:09:19,619 Y esto va ser: lo que si nota 3 por sí mismo, 159 00:09:19,619 --> 00:09:21,910 que normalmente se asume que esto es como un entero, 160 00:09:21,910 --> 00:09:25,050 sino porque todos los vectores son del mismo tipo, 161 00:09:25,050 --> 00:09:28,660 Este es un vector de dobles o numérico en este caso. 162 00:09:28,660 --> 00:09:34,920 >> RNorm es una función que genera variables-- normal estándar 163 00:09:34,920 --> 00:09:36,700 o valores normales estándar. 164 00:09:36,700 --> 00:09:38,360 Y estoy especificando dos de ellos. 165 00:09:38,360 --> 00:09:43,840 Así que estoy haciendo RNorm 2, la asignación que para desarrolladores, y luego estoy imprimiendo desarrolladores. 166 00:09:43,840 --> 00:09:47,350 Así que estos son sólo dos valores normales aleatorias. 167 00:09:47,350 --> 00:09:50,060 >> Y luego intercepciones si lo hace usted se preocupa por números enteros. 168 00:09:50,060 --> 00:09:54,650 Así que esto es sólo acerca de la memoria asignación y ahorro de tamaño de la memoria. 169 00:09:54,650 --> 00:10:01,460 Así que tendría que añadir sus números de la capital L. 170 00:10:01,460 --> 00:10:04,170 >> En general, este es Notación histórico de R 171 00:10:04,170 --> 00:10:06,940 para algo llamado entero largo. 172 00:10:06,940 --> 00:10:09,880 Así que la mayoría de las veces, se le ser tratar con dobles. 173 00:10:09,880 --> 00:10:15,180 Y si alguna vez lo hará más tarde en optimizar el código, 174 00:10:15,180 --> 00:10:18,110 usted puede añadir estos L's después o durante ella 175 00:10:18,110 --> 00:10:22,280 si eres como premonitoria de lo que vas a hacer estas variables. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Así que aquí es un vector de caracteres. 178 00:10:26,890 --> 00:10:31,440 Así que, de nuevo, estoy concatenando tres cuerdas esta vez. 179 00:10:31,440 --> 00:10:36,230 Observe que las cadenas dobles y cuerdas sueltas son los mismos en R. 180 00:10:36,230 --> 00:10:41,000 Así que tengo arturo y de marvin etc. cuando estoy imprimirlo, todos ellos 181 00:10:41,000 --> 00:10:43,210 van a mostrar cuerdas dobles. 182 00:10:43,210 --> 00:10:45,880 Y si también desea incluir la cadena doble o individual 183 00:10:45,880 --> 00:10:50,070 en sus personajes, entonces se puede o bien alternar sus cuerdas. 184 00:10:50,070 --> 00:10:53,540 >> Así marvin de la segundo elemento, esto es 185 00:10:53,540 --> 00:10:56,380 va a show-- usted sólo hay cuerdas dobles 186 00:10:56,380 --> 00:10:59,050 y luego una sola cadena por lo que este es alterna. 187 00:10:59,050 --> 00:11:04,040 De lo contrario, si desea utilizar un doble operador de cadena en una doble cadena 188 00:11:04,040 --> 00:11:07,090 cuando usted está declarando que, a continuación, sólo tiene que utilizar el operador de escape. 189 00:11:07,090 --> 00:11:10,600 Así lo hace la doble cadena de barra invertida. 190 00:11:10,600 --> 00:11:13,330 >> Y, por último, también tener vectores lógicos. 191 00:11:13,330 --> 00:11:15,890 Así logical-- tan TRUE y lo falso, y son 192 00:11:15,890 --> 00:11:18,880 va a ser mayúsculas. 193 00:11:18,880 --> 00:11:22,370 Y entonces, una vez más, estoy concatenando y luego ellos asignando a Bools. 194 00:11:22,370 --> 00:11:24,590 Así Bools va a mostrar usted TRUE, FALSE y TRUE. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Así que aquí está la indexación vectorizado. 197 00:11:31,620 --> 00:11:34,870 Así que, en principio, yo Estoy tomando un function-- 198 00:11:34,870 --> 00:11:39,230 esto se llama un sequence-- secuencia de 2 a 12. 199 00:11:39,230 --> 00:11:42,490 Y yo estoy tomando una secuencia por 2. 200 00:11:42,490 --> 00:11:46,660 Así que va a hacer 2, 4, 6, 8, 10 y 12. 201 00:11:46,660 --> 00:11:50,080 Y luego, estoy de indexación para obtener el tercer elemento. 202 00:11:50,080 --> 00:11:55,770 >> Así que una cosa a tener en cuenta es que los índices de R a partir del 1. 203 00:11:55,770 --> 00:12:00,550 Así vals 3 va a dar que el tercer elemento. 204 00:12:00,550 --> 00:12:04,580 Esta es una especie de diferente de otros idiomas en los que se inicia desde cero. 205 00:12:04,580 --> 00:12:09,780 Así que en C o C ++, por ejemplo, usted es va a conseguir el cuarto elemento. 206 00:12:09,780 --> 00:12:13,280 >> Y aquí está el vals de 3 a 5. 207 00:12:13,280 --> 00:12:16,030 Así que una cosa que es realmente genial es que usted 208 00:12:16,030 --> 00:12:20,410 puede generar variables temporales dentro y luego sólo tiene que utilizar sobre la marcha. 209 00:12:20,410 --> 00:12:21,960 Así que aquí es de 3 a 5. 210 00:12:21,960 --> 00:12:25,070 Así que estoy generando un vector 3, 4, y 5 y luego 211 00:12:25,070 --> 00:12:29,700 Estoy indexación de conseguir el tercero, cuarto, y el quinto elemento. 212 00:12:29,700 --> 00:12:32,280 >> Así mismo modo, puede abstracta que esto sólo lo hacen 213 00:12:32,280 --> 00:12:35,280 cualquier tipo de un vector que te da la indexación. 214 00:12:35,280 --> 00:12:40,050 Así que aquí está el vals y luego el primero, tercero y sexto elementos. 215 00:12:40,050 --> 00:12:42,800 Y luego, si quieres hacer un complemento, 216 00:12:42,800 --> 00:12:45,210 por lo que acaba de hacer el signo menos después y que va a 217 00:12:45,210 --> 00:12:48,600 te dará todo lo que no es el primera, tercera, sexta o elemento. 218 00:12:48,600 --> 00:12:51,590 Así que este será 4, 8, y 10. 219 00:12:51,590 --> 00:12:54,380 >> Y si usted quiere conseguir aún más avanzada, 220 00:12:54,380 --> 00:12:57,610 puede concatenar vectores de Boole. 221 00:12:57,610 --> 00:13:05,210 Así que este índice se va a dar este vector booleano de longitud 6. 222 00:13:05,210 --> 00:13:07,280 Así representante TRUE coma 3. 223 00:13:07,280 --> 00:13:09,680 Esto se repetirá VERDADEROS tres veces. 224 00:13:09,680 --> 00:13:12,900 Así que esto te dará TRUE, TRUE, TRUE vector. 225 00:13:12,900 --> 00:13:17,470 >> rep FALSO 4-- esto se va a dar un vector de FALSO, FALSO, FALSO, FALSO. 226 00:13:17,470 --> 00:13:21,280 Y entonces c va a concatenar esos dos Booleans juntos. 227 00:13:21,280 --> 00:13:24,090 Así que vas a conseguir tres Verdaderos y luego cuatro FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> Así que cuando usted vals índice, eres va a obtener el TRUE TRUE, TRUE,. 229 00:13:28,460 --> 00:13:31,420 Así que va a decir que sí, Quiero que esos tres elementos. 230 00:13:31,420 --> 00:13:33,520 Y luego FALSO, FALSO, FALSO, FALSO va 231 00:13:33,520 --> 00:13:37,140 decir que no, no quiero esos elementos por lo que no va a devolverlos. 232 00:13:37,140 --> 00:13:41,490 >> Y supongo que en realidad hay un error tipográfico aquí porque esto ya es decir repetición TRUE 3 233 00:13:41,490 --> 00:13:47,990 y repetir FALSO 4, y técnicamente, que sólo tienen seis elementos para repiten FALSE, 234 00:13:47,990 --> 00:13:50,470 que debería ser repetida FALSO 3. 235 00:13:50,470 --> 00:13:55,260 Creo que R es también lo suficientemente inteligente como que si sólo especifica 4 aquí, entonces 236 00:13:55,260 --> 00:13:56,630 que ni siquiera el error fuera. 237 00:13:56,630 --> 00:13:58,480 Se acaba de darle este valor. 238 00:13:58,480 --> 00:14:00,970 Así que sólo voy a ignorar ese cuarto FALSO. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Así que aquí está la asignación vectorizado. 241 00:14:09,270 --> 00:14:15,480 Así set.seed-- esto sólo establece el semilla para números pseudoaleatorios. 242 00:14:15,480 --> 00:14:20,110 Así que estoy estableciendo que la semilla 42, lo que significa que si genero 243 00:14:20,110 --> 00:14:22,950 tres aleatoria normal valores y, a continuación, si 244 00:14:22,950 --> 00:14:27,400 run set.seed por su cuenta equipo con el mismo valor de 42, 245 00:14:27,400 --> 00:14:30,990 entonces usted también consigue el mismos tres normales aleatorias. 246 00:14:30,990 --> 00:14:33,411 >> Así que esto es realmente bueno para la reproducibilidad. 247 00:14:33,411 --> 00:14:35,910 Por lo general, cuando estás haciendo algo de tipo de análisis científico, 248 00:14:35,910 --> 00:14:37,230 que se quiere establecer la semilla. 249 00:14:37,230 --> 00:14:41,270 De esta forma otros científicos pueden simplemente reproducir exactamente el mismo código que has 250 00:14:41,270 --> 00:14:44,790 hecho porque van a tener la exacta mismas variables aleatorias que-- o al azar 251 00:14:44,790 --> 00:14:47,270 valores que ha tomado hacia fuera también. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> Y así, la asignación vectorizada aquí está mostrando el vals 1-2. 254 00:14:53,910 --> 00:14:59,290 Por lo tanto, toma los dos primeros elementos de vals y luego los asigna a 0. 255 00:14:59,290 --> 00:15:03,940 Y luego, también puede simplemente hacer lo algo similar con los Booleanos. 256 00:15:03,940 --> 00:15:09,340 >> Así vals no es igual a 0-- esta voluntad darle un FALSO vector, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 en este caso. 258 00:15:10,350 --> 00:15:13,770 Y luego, que va a decir nada de los índices que fuera cierto, 259 00:15:13,770 --> 00:15:15,270 entonces va a asignar esa a 5. 260 00:15:15,270 --> 00:15:18,790 Por lo tanto, toma el tercer elemento aquí y luego lo asigna a 5. 261 00:15:18,790 --> 00:15:22,300 >> Y esto es realmente agradable en comparación con los lenguajes de bajo nivel 262 00:15:22,300 --> 00:15:25,560 donde tienes que usar los bucles hacer todas estas cosas vectorizada 263 00:15:25,560 --> 00:15:30,281 porque solo es muy intuitivo y es un solo de una sola línea. 264 00:15:30,281 --> 00:15:32,030 Y lo que es bueno de notación vectorizada 265 00:15:32,030 --> 00:15:37,020 es que en R, estos son una especie de incorporado para que estén casi tan rápido 266 00:15:37,020 --> 00:15:42,490 como hacer en un lenguaje de bajo nivel que en vez de hacer un bucle en R 267 00:15:42,490 --> 00:15:46,317 y luego tener que hacer la propia indexación dinámica. 268 00:15:46,317 --> 00:15:48,900 Y que va a ser más lento que hacer este tipo de cosas vectorizada 269 00:15:48,900 --> 00:15:55,950 donde puede hacerlo en paralelo, donde lo está haciendo en el roscado básicamente. 270 00:15:55,950 --> 00:15:58,650 >> Así que aquí está vectorizado operaciones. 271 00:15:58,650 --> 00:16:04,920 Así que estoy generando un valor de 1 a 3, la asignación de que a vec1, 3 a 5, vec2, 272 00:16:04,920 --> 00:16:05,950 sumándolos. 273 00:16:05,950 --> 00:16:11,490 Las agrega componentes sabia lo es 1 más 3, 2 plus 4, y así sucesivamente. 274 00:16:11,490 --> 00:16:13,330 >> vec1 veces vec2. 275 00:16:13,330 --> 00:16:16,110 Esto multiplica los dos valores de los componentes sabio. 276 00:16:16,110 --> 00:16:21,830 Así que es 1 Tiempos 3, 2 veces 4, y luego 3 veces 5. 277 00:16:21,830 --> 00:16:28,250 >> Y luego, de manera similar se puede también hacer comparisons-- comparaciones lógicas. 278 00:16:28,250 --> 00:16:33,640 Así que es FALSO VERDADERO FALSO en este caso porque 1 no es mayor que 3, 279 00:16:33,640 --> 00:16:35,920 2 no es mayor que 4. 280 00:16:35,920 --> 00:16:41,160 Esto es, supongo, otro error tipográfico, 3 definitivamente no es superior a 5. 281 00:16:41,160 --> 00:16:41,660 Sí. 282 00:16:41,660 --> 00:16:45,770 Y lo que sólo puede hacer todo estas operaciones simples 283 00:16:45,770 --> 00:16:48,350 porque su heredado de los propios clases. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Así que eso fue sólo el vector. 286 00:16:52,580 --> 00:16:56,530 Y eso es una especie de la más fundamental R objeto porque dado un vector, 287 00:16:56,530 --> 00:16:59,170 usted puede construir objetos más avanzados. 288 00:16:59,170 --> 00:17:00,560 >> Así que aquí está una matriz. 289 00:17:00,560 --> 00:17:05,030 Esta es esencialmente la abstracción de lo que es en sí misma una matriz. 290 00:17:05,030 --> 00:17:10,099 Así que en este caso, es tres diferentes vectores, donde cada uno es una columna, 291 00:17:10,099 --> 00:17:12,710 o se puede considerar que ya que cada uno es una fila. 292 00:17:12,710 --> 00:17:18,250 >> Así que estoy almacenar una matriz de 1 a 9 y luego estoy especificando 3 filas. 293 00:17:18,250 --> 00:17:23,364 Así 1-9 le dará un vector 1, 2, 3, 4, 5, 6, y todo el camino a 9. 294 00:17:23,364 --> 00:17:29,250 >> Una cosa a tener también en cuenta es que Tiendas R valores en formato de columna principal. 295 00:17:29,250 --> 00:17:34,160 Así, en otras palabras, cuando ves 1 a 9, que va a almacenar ellos-- 296 00:17:34,160 --> 00:17:36,370 que va a ser 1, 2, 3 en la primera columna, 297 00:17:36,370 --> 00:17:38,510 y luego que va a hacer 4, 5, 6 en la segunda columna, 298 00:17:38,510 --> 00:17:41,440 y luego 7, 8, 9 en la tercera columna. 299 00:17:41,440 --> 00:17:45,570 >> Y aquí están algunos otros funciones comunes que se pueden utilizar. 300 00:17:45,570 --> 00:17:49,650 Así tenue estera, esto le dará las dimensiones de la matriz. 301 00:17:49,650 --> 00:17:52,620 Se te va a volver un vector de la dimensión. 302 00:17:52,620 --> 00:17:55,580 Así, en este caso, porque nuestra matriz es de 3 por 3, 303 00:17:55,580 --> 00:18:01,900 que va a darle una vector numérico que hay 3 3. 304 00:18:01,900 --> 00:18:05,270 >> Y aquí se acaba mostrando la multiplicación de matrices. 305 00:18:05,270 --> 00:18:11,970 Así que por lo general, si sólo hacemos asterisk-- tan estera asterisco mat-- 306 00:18:11,970 --> 00:18:15,380 esto va a ser operación de componente sabia 307 00:18:15,380 --> 00:18:17,300 o lo que se llama el producto de Hadamard. 308 00:18:17,300 --> 00:18:21,310 Así que va a hacer cada uno elemento componente se refiere. 309 00:18:21,310 --> 00:18:23,610 Sin embargo, si quieres multiplication-- matriz 310 00:18:23,610 --> 00:18:29,380 por lo que la multiplicación de los primeros tiempos de fila primera columna de la segunda matriz de 311 00:18:29,380 --> 00:18:34,510 y así en-- usarías esta operación por ciento. 312 00:18:34,510 --> 00:18:38,110 >> Y t de estera es sólo una operación de transposición. 313 00:18:38,110 --> 00:18:42,590 Así que estoy diciendo tomar la transpuesta en la matriz, se multiplica por la matriz 314 00:18:42,590 --> 00:18:43,090 sí mismo. 315 00:18:43,090 --> 00:18:45,006 Y luego se va a volverá a vosotros otra 3 316 00:18:45,006 --> 00:18:50,700 por 3, que muestra la matriz el producto que te gustaría. 317 00:18:50,700 --> 00:18:53,750 >> Y por lo que fue la matriz. 318 00:18:53,750 --> 00:18:56,020 Esto es lo que se llama una trama de datos. 319 00:18:56,020 --> 00:19:00,780 Una trama de datos que se pueda imaginar como una matriz, pero cada propia columna 320 00:19:00,780 --> 00:19:02,990 va a ser de un tipo diferente. 321 00:19:02,990 --> 00:19:07,320 >> Entonces, ¿qué es realmente bueno de datos marcos es que en el análisis de datos en sí, 322 00:19:07,320 --> 00:19:11,260 vas a tener todo esto datos heterogéneos y todo esto realmente 323 00:19:11,260 --> 00:19:15,640 cosas sucias en la que cada una de las columnas por sí mismos pueden ser de diferentes tipos. 324 00:19:15,640 --> 00:19:21,460 Así que aquí estoy diciendo a crear un trama de datos, hacer enteros de 1 a 3, 325 00:19:21,460 --> 00:19:24,750 y luego también tener un vector de caracteres. 326 00:19:24,750 --> 00:19:28,470 Así que puede indexar a través cada una de estas columnas 327 00:19:28,470 --> 00:19:30,930 y luego voy a conseguir los propios valores. 328 00:19:30,930 --> 00:19:34,370 Y también se puede hacer algún tipo de operaciones en tramas de datos. 329 00:19:34,370 --> 00:19:38,040 Y la mayoría de las veces cuando estás hacer análisis de datos o algún tipo 330 00:19:38,040 --> 00:19:42,042 de procesamiento previo, podrás trabajar con estas estructuras de datos 331 00:19:42,042 --> 00:19:44,250 donde cada columna se va a ser de un tipo diferente. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Por último, por lo que estos son esencialmente sólo los cuatro objetos esenciales en Lista R. 334 00:19:52,970 --> 00:19:55,820 se acaba de recoger cualquier otros objetos que te quieren. 335 00:19:55,820 --> 00:20:00,130 Por lo tanto, almacenará esta en uno variable que se puede acceder fácilmente. 336 00:20:00,130 --> 00:20:02,370 >> Así que aquí, estoy tomando una lista. 337 00:20:02,370 --> 00:20:04,460 Estoy diciendo cosas es igual a 3. 338 00:20:04,460 --> 00:20:08,060 Así que voy a tener un elemento en la lista, y esto se llama materia, 339 00:20:08,060 --> 00:20:10,570 y que va a tener el valor 3. 340 00:20:10,570 --> 00:20:13,140 >> También puedo crear una matriz. 341 00:20:13,140 --> 00:20:17,970 Así que este es 1 a 4 y la fila final es igual a 2, por lo que un 2 por 2 matriz. 342 00:20:17,970 --> 00:20:20,270 También en la lista y se llama estera. 343 00:20:20,270 --> 00:20:24,690 moreStuff, una cadena de caracteres, e incluso otra lista en sí mismo. 344 00:20:24,690 --> 00:20:27,710 >> Así que esta es una lista que es 5 y el oso. 345 00:20:27,710 --> 00:20:30,990 Por lo tanto, tiene el valor 5 y tiene el oso cadena de caracteres 346 00:20:30,990 --> 00:20:32,710 y es una lista dentro de una lista. 347 00:20:32,710 --> 00:20:35,965 Así que usted puede tener estos cosas recursivos donde 348 00:20:35,965 --> 00:20:38,230 usted tiene una another-- escriba dentro del tipo. 349 00:20:38,230 --> 00:20:41,420 Similarmente, se puede tener una matriz dentro de otra matriz y así sucesivamente. 350 00:20:41,420 --> 00:20:44,264 Y la lista es sólo una buena manera de recopilar y agregar 351 00:20:44,264 --> 00:20:45,430 todos estos diferentes objetos. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> Y, por último, aquí se acaba de ayudar en caso esto sólo se había ido muy rápidamente. 354 00:20:57,150 --> 00:21:01,350 Así que cada vez que usted está confundido acerca de algún tipo de función, 355 00:21:01,350 --> 00:21:03,510 usted puede hacer ayuda de esa función. 356 00:21:03,510 --> 00:21:07,120 Así que usted puede hacer matriz ayuda o una matriz de signo de interrogación. 357 00:21:07,120 --> 00:21:11,430 Y ayuda y el signo de interrogación son sólo la abreviatura de la misma cosa 358 00:21:11,430 --> 00:21:13,040 por lo que son los alias. 359 00:21:13,040 --> 00:21:16,820 >> lm es una función que sólo lo hace un modelo lineal. 360 00:21:16,820 --> 00:21:20,340 Pero si sólo tienes idea de lo que obras, simplemente puedes hacer ayuda de lm 361 00:21:20,340 --> 00:21:24,610 y que le daré algunos tipo de documentación que 362 00:21:24,610 --> 00:21:27,960 se ve como una especie de página de manual en Unix, donde 363 00:21:27,960 --> 00:21:34,210 usted tiene una breve descripción de lo que lo hace, también lo son sus argumentos, 364 00:21:34,210 --> 00:21:38,850 lo que devuelve, ya sólo consejos sobre cómo para usarlo, y algunos ejemplos también. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Así que déjame ir adelante y espectáculo algunos de demostración del uso de R. Aceptar. 367 00:21:52,890 --> 00:21:55,470 Así que fui muy rápidamente sólo los datos 368 00:21:55,470 --> 00:21:59,440 estructuras y algún tipo de la op-- algunas de las operaciones. 369 00:21:59,440 --> 00:22:02,960 He aquí algunas funciones. 370 00:22:02,960 --> 00:22:06,750 >> Así que aquí sólo voy para definir una función. 371 00:22:06,750 --> 00:22:09,970 Así que yo también estoy usando operador de asignación aquí, 372 00:22:09,970 --> 00:22:12,610 y luego que estoy diciendo La declararemos como una función. 373 00:22:12,610 --> 00:22:14,140 Y toma el valor x. 374 00:22:14,140 --> 00:22:18,210 Así que esto es cualquier valor que desee y voy a volver x sí mismo. 375 00:22:18,210 --> 00:22:20,840 Así que esta es la función identidad. 376 00:22:20,840 --> 00:22:23,670 >> Y lo que es bueno de esto en comparación con otros idiomas 377 00:22:23,670 --> 00:22:26,330 y otra de bajo nivel idiomas es que x 378 00:22:26,330 --> 00:22:29,350 puede ser de cualquier tipo en sí y que va a regresar ese tipo. 379 00:22:29,350 --> 00:22:35,251 Así que usted puede imagine-- así que vamos me acaba de correr así de rápido. 380 00:22:35,251 --> 00:22:35,750 Lo siento. 381 00:22:35,750 --> 00:22:40,300 >> Así que una cosa debo mencionar también es que este editor que estoy usando 382 00:22:40,300 --> 00:22:41,380 se llama rstudio. 383 00:22:41,380 --> 00:22:44,389 Esto es lo que se llama un IDE. 384 00:22:44,389 --> 00:22:46,180 Y una cosa que es realmente bueno de esto 385 00:22:46,180 --> 00:22:51,500 es que incorpora una gran cantidad de la cosas que quieren hacer en R por sí mismo 386 00:22:51,500 --> 00:22:53,180 sólo muy intuitiva. 387 00:22:53,180 --> 00:22:55,550 >> Así que aquí es una consola de intérprete. 388 00:22:55,550 --> 00:23:02,160 Así mismo modo, también se puede obtener esta consola prima sólo por hacer un R. de capital 389 00:23:02,160 --> 00:23:05,630 Y esto es exactamente el lo mismo que la consola. 390 00:23:05,630 --> 00:23:12,210 Así que sólo puedo hacer Identificación función x, x, x. 391 00:23:12,210 --> 00:23:16,130 Y entonces-- y luego que va a estar bien en sí. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Así rstudio es grande porque tiene la consola. 394 00:23:21,740 --> 00:23:25,360 También tiene los documentos desea ejecutar en. 395 00:23:25,360 --> 00:23:28,629 Y entonces tiene algunas variables que se puede ver en los ambientes. 396 00:23:28,629 --> 00:23:30,420 Y entonces, si usted tiene hacer parcelas, entonces usted 397 00:23:30,420 --> 00:23:33,730 sólo puede verlo aquí, en lugar de la gestión de todos estos diferentes ventanas 398 00:23:33,730 --> 00:23:35,940 por sí mismos. 399 00:23:35,940 --> 00:23:40,530 >> En realidad, yo personalmente uso Vim, pero yo sentirse como rstudio es excelente justo 400 00:23:40,530 --> 00:23:44,640 para conseguir una buena idea de cómo usar R. Por lo general, 401 00:23:44,640 --> 00:23:47,040 cuando usted está tratando de aprender una tarea nueva, 402 00:23:47,040 --> 00:23:49,590 usted no desea manejar demasiadas cosas a la vez. 403 00:23:49,590 --> 00:23:53,120 Así que R es sólo un rstudio very-- es una muy buena forma de aprender R 404 00:23:53,120 --> 00:23:56,760 sin tener que lidiar con todas estas otras cosas. 405 00:23:56,760 --> 00:23:58,600 >> Así que aquí estoy de id corriendo hola. 406 00:23:58,600 --> 00:24:00,090 Esto devuelve hola. 407 00:24:00,090 --> 00:24:01,740 Identificación del 123. 408 00:24:01,740 --> 00:24:04,610 Aquí es un vector de enteros. 409 00:24:04,610 --> 00:24:08,620 Así que del mismo modo, porque se puede tomar ninguna algún tipo de valor, 410 00:24:08,620 --> 00:24:16,060 usted puede hacer volver Identificación de x de modo que devuelve 1,234 y 5. 411 00:24:16,060 --> 00:24:22,210 >> Y permítanme que muestran que esto es de hecho un número entero. 412 00:24:22,210 --> 00:24:28,800 Y del mismo modo, si lo hace la clase Identificación del x, que va a ser un número entero. 413 00:24:28,800 --> 00:24:34,170 Y luego, también puede comparar los dos y es verdad. 414 00:24:34,170 --> 00:24:38,350 Así que estoy comprobando si Identificación de x es igual es igual ax y notificación 415 00:24:38,350 --> 00:24:39,760 que te da dos Verdaderos. 416 00:24:39,760 --> 00:24:44,280 Así que esto no está diciendo son los dos objetos idénticos, 417 00:24:44,280 --> 00:24:46,845 pero son cada una de las entradas dentro de los vectores idénticos. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Aquí es bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Así que esto es un poco más complicado en que tiene una si la condición y demás 421 00:24:58,470 --> 00:25:00,960 y luego se necesitan dos argumentos a la vez. 422 00:25:00,960 --> 00:25:02,640 Así que x es de cualquier tipo. 423 00:25:02,640 --> 00:25:06,280 Y yo estoy diciendo esto segundo argumento es una. 424 00:25:06,280 --> 00:25:08,380 Esto puede ser cualquier cosa así. 425 00:25:08,380 --> 00:25:12,490 Pero por defecto, que va a tomar 5 si no se especifica nada. 426 00:25:12,490 --> 00:25:16,730 >> Así que aquí voy a decir si x es mayor que a. 427 00:25:16,730 --> 00:25:19,220 Así que si no especifico una, que dice que si x es mayor que 5, 428 00:25:19,220 --> 00:25:20,470 entonces voy a devolver TRUE. 429 00:25:20,470 --> 00:25:23,230 otra cosa, voy a devolver FALSE. 430 00:25:23,230 --> 00:25:24,870 Así que déjame ir adelante y defino esto. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> Y ahora voy a ejecutar bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Así que lo que dice es 3 menos no sea: 3 es mayor que 5. 434 00:25:39,150 --> 00:25:41,830 No, no es tan FALSO. 435 00:25:41,830 --> 00:25:46,550 >> Y bounded.compare 3 y voy para comparar usando a es igual a 2. 436 00:25:46,550 --> 00:25:50,700 Así que ahora estoy diciendo que sí, ahora me quieren un ser otra cosa. 437 00:25:50,700 --> 00:25:52,750 Así que voy a decir una, debe ser 2. 438 00:25:52,750 --> 00:25:56,640 >> Puedo o hacer este tipo de notación o me dicen que a es igual a 2. 439 00:25:56,640 --> 00:25:58,720 Esta es una más legible en que cuando estás 440 00:25:58,720 --> 00:26:01,450 mirando estos realmente funciones complicadas que 441 00:26:01,450 --> 00:26:08,110 tomar arguments-- múltiple y este puede haber docenas oftentimes-- diciendo 442 00:26:08,110 --> 00:26:11,140 A es igual a 2, es más fácil de leer para usted para que más adelante en el futuro 443 00:26:11,140 --> 00:26:13,020 usted sabrá lo que estás haciendo. 444 00:26:13,020 --> 00:26:17,120 >> Así que en este caso, estoy dicho es 3 superior a 2. 445 00:26:17,120 --> 00:26:18,270 Sí lo es. 446 00:26:18,270 --> 00:26:22,350 Y del mismo modo, yo sólo puedo quitar esto y decir, es mayor que 3 2 447 00:26:22,350 --> 00:26:23,440 donde a es igual a 2. 448 00:26:23,440 --> 00:26:26,230 Y eso también es cierto. 449 00:26:26,230 --> 00:26:26,730 ¿Sí? 450 00:26:26,730 --> 00:26:29,670 >> AUDIENCIA: ¿Es usted ejecutar línea por línea? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN TRAN: Sí, lo soy. 452 00:26:30,670 --> 00:26:33,900 Así que lo que estoy haciendo aquí es teniendo este texto document-- 453 00:26:33,900 --> 00:26:39,825 y lo bueno de rstudio es que Yo sólo puedo correr un short-- una tecla de acceso directo. 454 00:26:39,825 --> 00:26:41,820 Así que estoy haciendo Control-Enter. 455 00:26:41,820 --> 00:26:44,850 >> Y entonces, me estoy tomando el línea en el documento de texto 456 00:26:44,850 --> 00:26:46,710 y luego poner en la consola. 457 00:26:46,710 --> 00:26:50,800 Así que aquí estoy diciendo, bounded.compare y estoy haciendo Control-X. 458 00:26:50,800 --> 00:26:52,540 Así que sólo puedo hacer funcionar aquí también. 459 00:26:52,540 --> 00:26:54,920 Y luego que va a tomar la línea y luego lo puso aquí. 460 00:26:54,920 --> 00:26:57,900 Y a continuación, de manera similar, que pueda hacer funcionar aquí. 461 00:26:57,900 --> 00:27:04,630 Y entonces, sólo mantener la definición las líneas en la consola como eso. 462 00:27:04,630 --> 00:27:10,690 >> Y si también nota el rizado llaves están allí como en sintaxis de C. 463 00:27:10,690 --> 00:27:13,910 x-- si la si la condición es también va a utilizar paréntesis y después 464 00:27:13,910 --> 00:27:15,350 puede utilizar más. 465 00:27:15,350 --> 00:27:17,496 Otra es otra cosa si. 466 00:27:17,496 --> 00:27:21,440 Así que esto va a ser x es igual a es igual a, por ejemplo. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 Y luego voy a devolver algo aquí. 469 00:27:26,350 --> 00:27:29,490 >> Observe que hay dos diferentes cosas aquí que está pasando. 470 00:27:29,490 --> 00:27:34,360 Una es que aquí estoy especificando devolver el valor TRUE. 471 00:27:34,360 --> 00:27:35,950 Aquí sólo estoy diciendo x. 472 00:27:35,950 --> 00:27:39,970 Así R hará normalmente por defecto tomar el último arguments-- 473 00:27:39,970 --> 00:27:43,510 o tomar la última línea del código, y eso será lo que se devuelve. 474 00:27:43,510 --> 00:27:46,920 Así que aquí se trata de la misma cosa como hacer return x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> Y sólo para mostrar. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 Y luego, va a trabajar como si nada. 479 00:27:57,052 --> 00:27:58,260 Así que permítanme seguir con esto. 480 00:27:58,260 --> 00:28:00,630 >> Así lo demás si. 481 00:28:00,630 --> 00:28:04,060 Y de verdad, puedo volver cualquier cosa que me gustaría. 482 00:28:04,060 --> 00:28:06,680 Así que no tienen ni siquiera para retorno Booleans todo el tiempo, 483 00:28:06,680 --> 00:28:08,410 Puedo devuelve otra cosa. 484 00:28:08,410 --> 00:28:10,670 Así que yo puedo hacer el oso de retorno. 485 00:28:10,670 --> 00:28:12,989 >> Así que si x es igual a es igual a, que va a volver oso. 486 00:28:12,989 --> 00:28:14,530 De lo contrario, va a devolver TRUE. 487 00:28:14,530 --> 00:28:19,310 También puedo hacer un vector o realmente nada. 488 00:28:19,310 --> 00:28:22,210 >> Y normalmente en forma estática idiomas mecanografiadas, 489 00:28:22,210 --> 00:28:23,840 habría que especificar un tipo aquí. 490 00:28:23,840 --> 00:28:25,750 Y note que solo puede ser cualquier cosa. 491 00:28:25,750 --> 00:28:32,400 Y R es lo suficientemente inteligente que se acaba de hacer esto y no tendrán ningún problema. 492 00:28:32,400 --> 00:28:33,620 >> Así que permítanme definir esto. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh lo siento. 495 00:28:41,230 --> 00:28:44,336 Debe ser una llave aquí. 496 00:28:44,336 --> 00:28:44,836 DE ACUERDO. 497 00:28:44,836 --> 00:28:45,336 Fresco. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Bien. 500 00:28:54,530 --> 00:28:58,250 Así que ahora vamos a comparar 3 y a es igual a 3. 501 00:28:58,250 --> 00:29:01,860 Así que debería return-- yeah-- el oso valor. 502 00:29:01,860 --> 00:29:06,740 >> Así que ahora una cosa más general es como ¿qué hay de otras estructuras de datos. 503 00:29:06,740 --> 00:29:09,110 Por lo que tiene esta función. 504 00:29:09,110 --> 00:29:15,360 Esto va a trabajar en cualquier tipo de valor como 3 o cualquier numérico, 505 00:29:15,360 --> 00:29:17,500 en otras palabras, doble. 506 00:29:17,500 --> 00:29:19,330 >> Pero ¿qué pasa con algo así como un vector. 507 00:29:19,330 --> 00:29:27,750 Entonces, ¿qué pasa si usted hacer-- así que estoy va a asignar val a, por ejemplo, de 4 a 6. 508 00:29:27,750 --> 00:29:31,640 Así que si vuelvo esto, esto es un vector de 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Ahora vamos a ver qué pasa si lo hago bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Así que esto va a dar 15 1251. 512 00:29:42,450 --> 00:29:46,440 Así, en otras palabras, que está diciendo si nos fijamos en esta condición 513 00:29:46,440 --> 00:29:50,040 por lo que dice x es menor que una o algo así. 514 00:29:50,040 --> 00:29:51,880 Así que este es ligeramente confuso porque ahora 515 00:29:51,880 --> 00:29:53,379 usted simplemente no sabe lo que está pasando. 516 00:29:53,379 --> 00:29:58,690 Así que supongo que una cosa que es verdad bien acerca tratando de depuración 517 00:29:58,690 --> 00:30:04,600 es que usted sólo puede hacer val es mayor que una y ver qué pasa allí. 518 00:30:04,600 --> 00:30:09,720 >> Así val-- a es por defecto 5 así vamos a Do Val superior a 5. 519 00:30:09,720 --> 00:30:14,280 Así que este es un FALSO FALSO vector TRUE. 520 00:30:14,280 --> 00:30:17,206 Así que ahora, cuando usted está buscando en esto, que va a decir si, 521 00:30:17,206 --> 00:30:20,080 y entonces va a darle este es un vector de FALSO VERDADERO FALSO. 522 00:30:20,080 --> 00:30:23,450 >> Así que cuando pase esto en R, R no tiene idea de lo que estás haciendo. 523 00:30:23,450 --> 00:30:26,650 Debido a que se espera una sola valor, que es un valor booleano, y ahora 524 00:30:26,650 --> 00:30:29,420 usted está dando un vector de booleanos. 525 00:30:29,420 --> 00:30:31,970 Así que por defecto, R es sólo va a decir qué diablos, 526 00:30:31,970 --> 00:30:35,440 Voy a suponer que usted es Va a tomar el primer elemento aquí. 527 00:30:35,440 --> 00:30:38,320 Así que voy a decir-- voy asumir que esto es falso. 528 00:30:38,320 --> 00:30:40,890 Así que va a decir no, esto no es correcto. 529 00:30:40,890 --> 00:30:45,246 >> Del mismo modo, se va a val es igual a ser igual a a. 530 00:30:45,246 --> 00:30:47,244 No, lo siento 5. 531 00:30:47,244 --> 00:30:48,910 Y también va a ser falsa también. 532 00:30:48,910 --> 00:30:52,410 Así que va a decir que no, No es verdad, así por lo que es 533 00:30:52,410 --> 00:30:53,680 va a devolver este último. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Así que esto es ya sea bueno o malo cosa, dependiendo de cómo se lo mire. 536 00:31:01,360 --> 00:31:05,104 Porque cuando estás la creación de estas funciones, 537 00:31:05,104 --> 00:31:06,770 que en realidad no sabe lo que está pasando. 538 00:31:06,770 --> 00:31:10,210 Así que a veces te gustaría un error, o tal vez lo que desea es una advertencia. 539 00:31:10,210 --> 00:31:12,160 En este caso, R no hace eso. 540 00:31:12,160 --> 00:31:14,300 Así que es realmente hasta en base fuera de lo 541 00:31:14,300 --> 00:31:17,310 Crees que el idioma debe hacer en este caso 542 00:31:17,310 --> 00:31:22,920 si se pasa en un vector de Booleans cuando estás haciendo un if condición. 543 00:31:22,920 --> 00:31:31,733 >> Así que vamos a decir que usted tenía el original uno con if else return TRUE y ya está 544 00:31:31,733 --> 00:31:34,190 va a devolver FALSE. 545 00:31:34,190 --> 00:31:39,300 Así que una manera de abstraer esto es para decir que 546 00:31:39,300 --> 00:31:41,530 ni siquiera necesitan esta cosa condicional. 547 00:31:41,530 --> 00:31:47,220 Otra cosa que puedo hacer es sólo la devolución de los mismos valores. 548 00:31:47,220 --> 00:31:53,240 Así que si te fijas, si Do Val es mayor que 5, 549 00:31:53,240 --> 00:31:56,350 esto va a devolver un vector FALSO VERDADERO FALSO. 550 00:31:56,350 --> 00:31:58,850 >> Tal vez esto es lo que desear para bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Tú quieres volver un vector de Booleans donde se compara cada uno de los valores 552 00:32:02,940 --> 00:32:04,190 a sí mismos. 553 00:32:04,190 --> 00:32:11,165 Así que sólo puedo hacer bounded.compare función de x, a es igual a 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 Y a continuación, en lugar de hacer esta condición más si, 556 00:32:15,363 --> 00:32:21,430 Yo sólo voy a volver x es mayor que 5. 557 00:32:21,430 --> 00:32:23,620 Así que si es cierto, entonces que va a devolver TRUE. 558 00:32:23,620 --> 00:32:26,830 Y luego, si no lo es, es va a devolver FALSE. 559 00:32:26,830 --> 00:32:30,880 >> Y esto funcionará para cualquiera de estas estructuras. 560 00:32:30,880 --> 00:32:41,450 Así que puedo bounded.compare c 1 6 o 9 y luego me voy a decir a es igual a 6, 561 00:32:41,450 --> 00:32:42,799 por ejemplo. 562 00:32:42,799 --> 00:32:44,840 Y luego se va a le dará el derecho de Boole 563 00:32:44,840 --> 00:32:48,240 vector que estás diseñando. 564 00:32:48,240 --> 00:32:50,660 >> Así que esos son sólo funciones y ahora permítanme 565 00:32:50,660 --> 00:32:54,980 mostrar algunos elementos visuales interactivos. 566 00:32:54,980 --> 00:32:59,700 No creo que realmente tengo Wi-Fi aquí así que me acabo de ir por delante 567 00:32:59,700 --> 00:33:01,970 y evita este supongo. 568 00:33:01,970 --> 00:33:05,260 >> Pero una cosa que es genial sin embargo, es que si sólo 569 00:33:05,260 --> 00:33:09,600 que desee probar un montón de diferentes comandos de datos, 570 00:33:09,600 --> 00:33:13,320 hay un montón de diferentes conjuntos de datos que ya están precargados en R. 571 00:33:13,320 --> 00:33:15,770 Así que uno de ellos es llamado el conjunto de datos del iris. 572 00:33:15,770 --> 00:33:18,910 Este es uno de los más bien conocida los de aprendizaje automático. 573 00:33:18,910 --> 00:33:23,350 Por lo general, acaba de hacer algún tipo de casos de prueba para ver si su código se ejecuta. 574 00:33:23,350 --> 00:33:27,520 Así que vamos a comprobar lo iris es. 575 00:33:27,520 --> 00:33:33,130 >> Así que esta cosa va ser una trama de datos. 576 00:33:33,130 --> 00:33:36,000 Y que es un poco largo porque Acabo Imprimí iris. 577 00:33:36,000 --> 00:33:38,810 Está imprimiendo toda la cosa. 578 00:33:38,810 --> 00:33:42,830 Así que tiene todos estos nombres diferentes. 579 00:33:42,830 --> 00:33:45,505 Así iris es una colección de flores diferentes. 580 00:33:45,505 --> 00:33:48,830 En este caso, se está diciendo que las especies de la misma, 581 00:33:48,830 --> 00:33:54,760 todos estos diferentes anchuras y longitudes del sépalo y el pétalo. 582 00:33:54,760 --> 00:33:58,880 >> Y por lo que normalmente, si que desea imprimir iris, 583 00:33:58,880 --> 00:34:03,680 por ejemplo, usted no quiere tener que hacer todo esto porque eso puede hacerse cargo de 584 00:34:03,680 --> 00:34:05,190 toda la consola. 585 00:34:05,190 --> 00:34:09,280 Así que una cosa que es realmente agradable es la función de cabeza. 586 00:34:09,280 --> 00:34:12,929 Así que si usted acaba de hacer la cabeza iris, esto le dará 587 00:34:12,929 --> 00:34:17,389 las primeras cinco filas o seis supongo. 588 00:34:17,389 --> 00:34:19,909 Y entonces bien, sólo puede especificar aquí. 589 00:34:19,909 --> 00:34:22,914 Así 20-- esto le dará que las primeras 20 filas. 590 00:34:22,914 --> 00:34:24,830 Y yo en realidad era una especie sorprendido de que este 591 00:34:24,830 --> 00:34:28,770 me dio seis así que me voy a continuación y comprobar iris-- o la cabeza, lo siento. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 Y aquí se le dará que la documentación 594 00:34:34,960 --> 00:34:37,960 de lo que hace la cabeza de valor. 595 00:34:37,960 --> 00:34:40,839 Así que devuelve el primer o la última de un objeto. 596 00:34:40,839 --> 00:34:42,630 Y luego voy a mirar a los valores predeterminados. 597 00:34:42,630 --> 00:34:47,340 Y luego dice el predeterminado método cabeza x y n es igual a 6 l. 598 00:34:47,340 --> 00:34:50,620 Así que esto devuelve los primeros seis elementos. 599 00:34:50,620 --> 00:34:55,050 Y del mismo modo, si usted nota aquí, no tiene que especificar n es igual a 6. 600 00:34:55,050 --> 00:34:56,840 Por defecto se utiliza seis, supongo. 601 00:34:56,840 --> 00:35:00,130 Y entonces, si quiero especificar un cierto valor, entonces puedo ver eso también. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Así que eso es algunos comandos simples y aquí hay otra que es sólo-- bien, 604 00:35:10,592 --> 00:35:12,550 Yo can-- esto es en realidad un poco más complejo, 605 00:35:12,550 --> 00:35:17,130 pero esto acaba de tomar la clase de cada columna del conjunto de datos del iris. 606 00:35:17,130 --> 00:35:20,910 Así que esto le mostrará lo que cada uno de ellos columnas son en términos de sus tipos. 607 00:35:20,910 --> 00:35:23,665 Así longitud sépalo es numérico, ancho sépalo es numérico. 608 00:35:23,665 --> 00:35:26,540 Todos estos valores son sólo numérico porque se puede deducir de estos datos 609 00:35:26,540 --> 00:35:29,440 estructurar estos son todo va a numérico. 610 00:35:29,440 --> 00:35:34,310 >> Y la columna de la Especie va a ser un factor. 611 00:35:34,310 --> 00:35:37,270 Así que normalmente, se podría pensar que esto es como una cadena de caracteres. 612 00:35:37,270 --> 00:35:48,830 Pero si sólo hacemos irisSpecies, y luego me voy a hacer la cabeza 5, 613 00:35:48,830 --> 00:35:51,820 y esto va a imprimir los cinco primeros valores. 614 00:35:51,820 --> 00:35:54,150 >> Y a continuación, observe estos niveles. 615 00:35:54,150 --> 00:35:58,870 Así que esto es diciendo-- esta es la forma de R de tener las variables categóricas. 616 00:35:58,870 --> 00:36:03,765 Así que en lugar de sólo con cadenas de caracteres, 617 00:36:03,765 --> 00:36:06,740 tiene niveles especificando cuál de estas cosas son. 618 00:36:06,740 --> 00:36:12,450 >> Así que digamos que irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Así que lo que quiero hacer aquí es que estoy subconjuntos de esta columna Especies. 620 00:36:17,690 --> 00:36:21,480 Así que esto toma la La columna Especies y luego 621 00:36:21,480 --> 00:36:23,820 índices para obtener el primer elemento. 622 00:36:23,820 --> 00:36:27,140 Así que esto debe darle setosa. 623 00:36:27,140 --> 00:36:28,710 Y también te da los niveles aquí. 624 00:36:28,710 --> 00:36:32,812 >> Así que usted puede comparar también esto a la setosa carácter 625 00:36:32,812 --> 00:36:34,645 y esto no va es cierto porque uno 626 00:36:34,645 --> 00:36:37,940 es de un tipo diferente que el otro. 627 00:36:37,940 --> 00:36:40,590 O supongo que es verdad porque R es más inteligente que eso. 628 00:36:40,590 --> 00:36:45,420 Y mira esto y después dice, tal vez esto es lo que quieres. 629 00:36:45,420 --> 00:36:51,860 Así que va a decir el carácter setosa cadena es la misma como este. 630 00:36:51,860 --> 00:37:01,290 Y a continuación, de manera similar, se puede También acaba de agarrar estos como así sucesivamente. 631 00:37:01,290 --> 00:37:05,580 >> Así que eso es sólo una especie de comandos rápidos del conjunto de datos. 632 00:37:05,580 --> 00:37:08,030 Así que aquí está un poco de exploración de datos. 633 00:37:08,030 --> 00:37:11,360 Así que esto es un poco más involucrado con el análisis de datos. 634 00:37:11,360 --> 00:37:18,340 Y esto se toma de algunos bootcamp en I en Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Así biblioteca extranjera. 636 00:37:20,790 --> 00:37:24,880 Así que voy a cargar en un biblioteca que se llama extranjera. 637 00:37:24,880 --> 00:37:32,460 Así que esto me va a dar read.dta así asumir que tengo este conjunto de datos. 638 00:37:32,460 --> 00:37:39,000 Este se almacena en la corriente directorio de mi consola de trabajo. 639 00:37:39,000 --> 00:37:42,190 Así que vamos a ver qué el directorio de trabajo es. 640 00:37:42,190 --> 00:37:44,620 >> Así que aquí está mi directorio de trabajo. 641 00:37:44,620 --> 00:37:50,040 Y leer datos de puntos, esta cosa, está diciendo este archivo 642 00:37:50,040 --> 00:37:54,650 se encuentra en la carpeta de datos de este directorio de trabajo actual. 643 00:37:54,650 --> 00:38:00,520 Y esto no es read.dta un comando predeterminado. 644 00:38:00,520 --> 00:38:02,760 Supongo que me lo cargué en ya. 645 00:38:02,760 --> 00:38:04,750 IEI asumió cargué esto ya. 646 00:38:04,750 --> 00:38:08,115 >> Pero hasta read.dta no va ser un comando predeterminado. 647 00:38:08,115 --> 00:38:11,550 Y es por eso que vas a tener cargar en esta biblioteca package-- 648 00:38:11,550 --> 00:38:14,500 este paquete de llama exterior. 649 00:38:14,500 --> 00:38:16,690 Y si usted no tiene el paquete, creo 650 00:38:16,690 --> 00:38:19,180 extranjero es uno de los más integrados. 651 00:38:19,180 --> 00:38:31,150 De lo contrario, también puede hacer install.packages 652 00:38:31,150 --> 00:38:33,180 y esto va a instalar el paquete. 653 00:38:33,180 --> 00:38:36,878 Y esto le dará R. Uh, no. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 Y entonces yo sólo voy a dejar de esto porque ya lo tengo. 656 00:38:43,140 --> 00:38:46,920 >> Pero lo que es realmente bueno de R es que la gestión de paquetes 657 00:38:46,920 --> 00:38:48,510 sistema es muy elegante. 658 00:38:48,510 --> 00:38:52,470 Porque va a almacenar todo muy bien para usted. 659 00:38:52,470 --> 00:38:59,780 Así que en este caso, se va a almacenar en, creo, esta biblioteca aquí. 660 00:38:59,780 --> 00:39:02,390 >> Así que cada vez que desee instalar nuevos paquetes, 661 00:39:02,390 --> 00:39:04,980 es tan simple como haciendo install.packages 662 00:39:04,980 --> 00:39:07,500 y R gestionará todo los paquetes para usted. 663 00:39:07,500 --> 00:39:12,900 Así que usted no tiene que hacer algo en Python, donde usted tiene el paquete externo 664 00:39:12,900 --> 00:39:15,330 gerentes como el papel Anaconda donde estés 665 00:39:15,330 --> 00:39:18,310 doing-- instalar el paquetes externos a Python 666 00:39:18,310 --> 00:39:20,940 y luego intenta ejecutar por sí mismo. 667 00:39:20,940 --> 00:39:22,210 Así que esta es muy buena manera. 668 00:39:22,210 --> 00:39:25,590 >> Y install.packages requiere internet. 669 00:39:25,590 --> 00:39:31,950 Se necesita de un servidor y el repositorio que 670 00:39:31,950 --> 00:39:33,960 recoge todas las paquetes se llama CRAN. 671 00:39:33,960 --> 00:39:40,690 Y usted puede especificar qué tipo de espejo quiere descargar los paquetes. 672 00:39:40,690 --> 00:39:43,420 >> Así que aquí estoy tomando este conjunto de datos. 673 00:39:43,420 --> 00:39:46,240 Lo estoy leyendo en el uso de esta función. 674 00:39:46,240 --> 00:39:49,360 Así que déjame ir adelante y hacer eso. 675 00:39:49,360 --> 00:39:52,900 >> Así que vamos a suponer que usted tiene este conjunto de datos 676 00:39:52,900 --> 00:39:55,550 y usted no tiene absolutamente ni idea de lo que es. 677 00:39:55,550 --> 00:39:58,560 Y esta realidad surge con bastante frecuencia en la industria 678 00:39:58,560 --> 00:40:00,910 en el que sólo tiene estos toneladas y toneladas de cosas desordenadas 679 00:40:00,910 --> 00:40:02,890 y son increíblemente sin etiqueta. 680 00:40:02,890 --> 00:40:06,380 Así que aquí tengo este conjunto de datos y no sé 681 00:40:06,380 --> 00:40:08,400 lo que es, así que estoy solo mostrando a comprobarlo. 682 00:40:08,400 --> 00:40:10,620 >> Así que me voy a hacer la cabeza primero. 683 00:40:10,620 --> 00:40:14,190 Así que puedo comprobar los primeros seis columnas de lo que este conjunto de datos es. 684 00:40:14,190 --> 00:40:21,730 Así que este es el estado, pres04, y luego todos estos diferentes tipo de columnas. 685 00:40:21,730 --> 00:40:25,612 Y lo que es interesante aquí, supongo, es que usted 686 00:40:25,612 --> 00:40:27,945 asumiría que esto se ve como una especie de elección. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 Y supongo que sólo desde viendo el archivo 689 00:40:32,190 --> 00:40:41,070 nombrar esto es una especie de colección de los datos sobre los candidatos o electores 690 00:40:41,070 --> 00:40:44,920 que votó por los presidentes específicos o candidatos presidenciales 691 00:40:44,920 --> 00:40:46,550 para las elecciones de 2004. 692 00:40:46,550 --> 00:40:52,920 >> Así que aquí está los valores 1, 2 así que una forma de almacenar 693 00:40:52,920 --> 00:40:56,540 los candidatos presidenciales son sus nombres. 694 00:40:56,540 --> 00:40:59,780 En este caso, parece que son valores sólo enteros. 695 00:40:59,780 --> 00:41:04,030 Así 2004, era Bush frente a Kerry que yo creo. 696 00:41:04,030 --> 00:41:09,010 Y ahora, vamos a decir que simplemente no sabe si 1 corresponde a Bush o 2 697 00:41:09,010 --> 00:41:11,703 corresponde a Kerry o y etc., etc., ¿no? 698 00:41:11,703 --> 00:41:15,860 >> Y esto es, sólo para mí, un problema bastante común. 699 00:41:15,860 --> 00:41:18,230 Entonces, ¿qué se puede hacer en este caso? 700 00:41:18,230 --> 00:41:20,000 Así que vamos a ver todas estas otras cosas. 701 00:41:20,000 --> 00:41:22,790 >> estado, estoy asumiendo este proviene de diferentes estados. 702 00:41:22,790 --> 00:41:25,100 PartyID, ingresos. 703 00:41:25,100 --> 00:41:27,710 Veamos PartyID. 704 00:41:27,710 --> 00:41:32,800 Así que tal vez una cosa que puedes hacer es mirar a cada una de las observaciones 705 00:41:32,800 --> 00:41:36,250 que tienen un PartyID del republicano o demócrata o algo así. 706 00:41:36,250 --> 00:41:38,170 Así que vamos a ver en qué PartyID es. 707 00:41:38,170 --> 00:41:41,946 >> Así que me voy a tomar dat y luego me voy 708 00:41:41,946 --> 00:41:47,960 Para ello el signo de dólar operador que hice anteriormente 709 00:41:47,960 --> 00:41:50,770 y esto va a subconjunto a esa columna. 710 00:41:50,770 --> 00:41:57,760 Y luego me voy a dirigir esto en 20, sólo para ver cómo se ve. 711 00:41:57,760 --> 00:42:00,170 >> Así que esto es sólo un montón de AN. 712 00:42:00,170 --> 00:42:02,800 En otras palabras, usted tiene faltan datos acerca de estos chicos. 713 00:42:02,800 --> 00:42:08,100 Pero también se observa este dat PartyID es un factor 714 00:42:08,100 --> 00:42:10,030 por lo que este le da diferentes categorías. 715 00:42:10,030 --> 00:42:14,170 Así, en otras palabras, PartyID puede tomar Demócrata, republicano, independiente, 716 00:42:14,170 --> 00:42:16,640 o algo más. 717 00:42:16,640 --> 00:42:23,940 >> Así que vamos a seguir adelante y de que vamos ver cuál de estos es-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Así que voy al subconjunto a PartyId y luego 719 00:42:28,480 --> 00:42:32,780 miran cuáles son Demócrata, por ejemplo. 720 00:42:32,780 --> 00:42:37,150 Esto va a darle un booleano, una enorme booleano de Trues y FALSEs. 721 00:42:37,150 --> 00:42:41,630 >> Y ahora, vamos a decir que quiero al subconjunto de estos chicos. 722 00:42:41,630 --> 00:42:47,260 Así que esto va a llevar a mi dat y subconjunto a cualquier observaciones 723 00:42:47,260 --> 00:42:48,910 tienen iguales PartyId iguales demócrata. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 Y esto es muy largo porque hay tantos de ellos. 726 00:42:55,180 --> 00:42:59,060 Así que ahora, me voy a dirigir esto en 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> Y como te das cuenta, es igual a los iguales es interesante en que eres 729 00:43:11,270 --> 00:43:13,250 ya-- usted también está incluida la AN. 730 00:43:13,250 --> 00:43:19,010 Así que en este caso, todavía no puede conseguir cualquier información porque ahora tienes AN 731 00:43:19,010 --> 00:43:22,650 y lo que desea es ver cuál de los observación corresponde al demócrata 732 00:43:22,650 --> 00:43:24,670 y no faltan estos mismos valores. 733 00:43:24,670 --> 00:43:27,680 Entonces, ¿cómo deshacerse de estos AN? 734 00:43:27,680 --> 00:43:36,410 >> Así que aquí estoy usando la llave en mi cursor y luego diciendo moverse. 735 00:43:36,410 --> 00:43:39,778 Y entonces aquí sólo voy decir is.na datpartyid. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Así que esto y ya tendrá dos vectores diferentes booleanas 738 00:43:52,720 --> 00:43:57,160 y decir que va a ser VERDADERO y FALSO por ejemplo. 739 00:43:57,160 --> 00:43:59,190 Así que va a hacer este componente se refiere. 740 00:43:59,190 --> 00:44:02,910 Así que aquí estoy diciendo toma la trama de datos, subconjunto 741 00:44:02,910 --> 00:44:10,170 a los que corresponden a Democrat, y eliminar cualquiera de ellos que no son NA. 742 00:44:10,170 --> 00:44:13,540 >> Así que esto debe Voluntad-- darle algo. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Veamos is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Probemos datpartyid is.na. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 Y esto debe dar usted-- sorry-- sólo un vector booleano. 749 00:44:45,290 --> 00:44:49,260 Y luego, porque es muy largo, Voy a un subconjunto de 20. 750 00:44:49,260 --> 00:44:49,760 DE ACUERDO. 751 00:44:49,760 --> 00:44:51,570 Así que esto debería funcionar. 752 00:44:51,570 --> 00:44:54,700 >> Y éste también será Verdaderos. 753 00:44:54,700 --> 00:45:01,830 Ah, así que mi error aquí es que yo-- yo utilizan C ++ y R indistintamente por lo que hacen 754 00:45:01,830 --> 00:45:03,590 este error todo el tiempo. 755 00:45:03,590 --> 00:45:05,807 El operador y es en realidad el que usted desea. 756 00:45:05,807 --> 00:45:08,140 Usted no quiere usar dos los símbolos de unión, sólo uno solo. 757 00:45:08,140 --> 00:45:14,970 758 00:45:14,970 --> 00:45:17,010 DE ACUERDO. 759 00:45:17,010 --> 00:45:18,140 >> Así que vamos a ver. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Así que subestablecida a la PartyID donde están demócrata 762 00:45:23,920 --> 00:45:25,300 y no están los valores perdidos. 763 00:45:25,300 --> 00:45:27,690 Y ahora vamos a ver cuáles votaron. 764 00:45:27,690 --> 00:45:31,530 Así que parece que la mayoría de ellos votaron por 1. 765 00:45:31,530 --> 00:45:36,090 Así que voy a seguir adelante y decir que es Kerry. 766 00:45:36,090 --> 00:45:39,507 >> Y del mismo modo, se puede También ir a Republicano 767 00:45:39,507 --> 00:45:41,090 y es de esperar, esto debe darle 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 Es sólo un montón de diferentes columnas. 770 00:45:51,770 --> 00:45:53,070 Y, en efecto, es 2. 771 00:45:53,070 --> 00:45:55,750 Así PartyId todo republicano, la mayoría de ellos están votando por 2. 772 00:45:55,750 --> 00:45:58,390 >> Así que parece, sólo al ver esto, 773 00:45:58,390 --> 00:46:00,600 Republicano va a ser un very-- o la PartyID 774 00:46:00,600 --> 00:46:02,790 va a ser una muy factor importante en la determinación de 775 00:46:02,790 --> 00:46:05,420 cuál de los candidatos que están ir a votar. 776 00:46:05,420 --> 00:46:07,120 Y esto es obviamente cierto en general. 777 00:46:07,120 --> 00:46:10,139 Y esto coincide con su intuición, por supuesto. 778 00:46:10,139 --> 00:46:11,930 Así que parece que soy acabando el tiempo lo 779 00:46:11,930 --> 00:46:17,040 déjame sólo debería seguir adelante y mostrar algunas imágenes rápidas. 780 00:46:17,040 --> 00:46:21,120 Así que aquí hay algo que es ligeramente más complicada con la visualización. 781 00:46:21,120 --> 00:46:26,450 Así pues, en este caso, este es un muy simple análisis de simplemente comprobar lo 782 00:46:26,450 --> 00:46:28,500 el presidente del '04 es. 783 00:46:28,500 --> 00:46:33,920 >> Así que en este caso, digamos que usted querido responder a esta pregunta. 784 00:46:33,920 --> 00:46:38,540 Así que supongamos que queríamos saber la votación comportamiento en las elecciones de presidente 2004 785 00:46:38,540 --> 00:46:41,170 y cómo eso varía según la raza. 786 00:46:41,170 --> 00:46:44,380 Así que no sólo es lo que quieres ver el comportamiento de los votantes, 787 00:46:44,380 --> 00:46:47,860 pero desea subconjunto de cada raza y especie de resumen que. 788 00:46:47,860 --> 00:46:50,770 Y sólo se puede decir por esta notación compleja 789 00:46:50,770 --> 00:46:52,580 que esto es una especie de conseguir nebuloso. 790 00:46:52,580 --> 00:46:56,390 >> Así que uno de los más avanzados de I paquetes que también clase de reciente 791 00:46:56,390 --> 00:47:00,070 se llama dplyr. 792 00:47:00,070 --> 00:47:03,060 Por lo que es esta de aquí. 793 00:47:03,060 --> 00:47:08,080 Y ggplot2 ggg-- es sólo un bonito forma de hacer las mejores visualizaciones 794 00:47:08,080 --> 00:47:09,400 que el incorporado. 795 00:47:09,400 --> 00:47:11,108 >> Así que voy a cargar estas dos bibliotecas. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 Y entonces, me voy a ir adelante y ejecutar este comando. 798 00:47:16,950 --> 00:47:19,050 Usted sólo puede tratar esto como un cuadro negro. 799 00:47:19,050 --> 00:47:23,460 >> Lo que pasa es que esta tubería operador está pasando en este argumento 800 00:47:23,460 --> 00:47:24,110 en aquí. 801 00:47:24,110 --> 00:47:28,070 Así que estoy diciendo grupo de dat la raza y el entonces presidente 04. 802 00:47:28,070 --> 00:47:31,530 Y luego, todos estos otros comandos están filtrando y luego resumir 803 00:47:31,530 --> 00:47:34,081 donde yo estoy haciendo recuento y entonces estoy trazando aquí. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 Aceptar fresco. 806 00:47:42,500 --> 00:47:44,620 Así que vamos a seguir adelante y ver el aspecto que tiene. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Entonces, ¿qué está pasando aquí es que yo sólo trazan cada una de las carreras y luego 809 00:47:57,290 --> 00:47:59,670 cuáles votaron. 810 00:47:59,670 --> 00:48:03,492 Y estos dos diferentes valores corresponden a 2 y 1. 811 00:48:03,492 --> 00:48:05,325 Si quieres ser más elegante, también puede 812 00:48:05,325 --> 00:48:11,770 Sólo especifique que 2 es Kerry-- o 2 es Bush, y luego 1 es Kerry. 813 00:48:11,770 --> 00:48:13,700 Y también se puede tener que en su leyenda. 814 00:48:13,700 --> 00:48:17,410 >> Y también se puede dividir estos gráficos de barras. 815 00:48:17,410 --> 00:48:19,480 Porque una cosa es que, si te fijas, 816 00:48:19,480 --> 00:48:24,560 esto no es muy fácil de identificar ¿cuál de estos dos valores son más grandes. 817 00:48:24,560 --> 00:48:27,920 Así que una cosa que te gustaría hacer es tomar este área azul 818 00:48:27,920 --> 00:48:31,855 y acaba de pasar por aquí, así que Podemos comparar estos dos de lado a lado. 819 00:48:31,855 --> 00:48:34,480 Y creo que eso es algo que no tienen tiempo para hacerlo en este momento, 820 00:48:34,480 --> 00:48:36,660 pero eso es también muy fácil de hacer. 821 00:48:36,660 --> 00:48:40,310 Usted puede simplemente mirar en las páginas del manual de ggplot. 822 00:48:40,310 --> 00:48:47,170 Así que sólo puedo hacer ggplot como eso y leer en esta página de manual. 823 00:48:47,170 --> 00:48:51,920 >> Así que permítanme rápidamente mostrar algunas cosas interesantes. 824 00:48:51,920 --> 00:48:57,610 Vamos a seguir adelante e ir a-- sólo una aplicación de aprendizaje automático. 825 00:48:57,610 --> 00:49:02,450 Así que vamos a decir que tenemos estos tres paquetes, así que voy a cargar estos en. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Así que esto acaba de imprimir algo de información después cargué en la cosa. 828 00:49:09,170 --> 00:49:15,220 Así que yo estoy diciendo esto read.csv, este conjunto de datos, y ahora 829 00:49:15,220 --> 00:49:18,940 Voy a seguir adelante y mirar y ver lo que hay dentro de este conjunto de datos. 830 00:49:18,940 --> 00:49:22,080 >> Así que las primeras 20 observaciones. 831 00:49:22,080 --> 00:49:27,190 Así que sólo tengo X1, X2 y Y. Por lo tanto, parece como un montón de estos valores 832 00:49:27,190 --> 00:49:31,640 se van desde tal vez 20 a 80 o así. 833 00:49:31,640 --> 00:49:37,700 Y entonces de manera similar para X2 y luego Y este parece ser etiquetas de 0 y 1. 834 00:49:37,700 --> 00:49:49,500 >> Para comprobar esto, puedo sólo lo hacen los datos de resumen X1. 835 00:49:49,500 --> 00:49:51,660 Y entonces de manera similar para todas estas otras columnas. 836 00:49:51,660 --> 00:49:55,300 Así resumen es una forma rápida de lo que muestra a los valores rápidos. 837 00:49:55,300 --> 00:49:56,330 Oh, lo siento. 838 00:49:56,330 --> 00:49:58,440 Éste debe ser Y. 839 00:49:58,440 --> 00:50:03,420 >> Así que en este caso, da la cuantiles, medianas, maxes también. 840 00:50:03,420 --> 00:50:07,130 En este caso, dataY, se puede ver que sólo va a ser 0 y 1. 841 00:50:07,130 --> 00:50:10,100 También la media está diciendo 0.6, sólo significa que se 842 00:50:10,100 --> 00:50:13,380 parece que tengo más que 1s 0s. 843 00:50:13,380 --> 00:50:16,160 >> Así que déjame ir adelante y espectáculo lo que esto parece. 844 00:50:16,160 --> 00:50:17,470 Así que sólo voy a graficar esta. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Vamos a ver cómo borrar esto. 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 DE ACUERDO. 851 00:50:36,340 --> 00:50:37,590 >> Así que esto es lo que parece. 852 00:50:37,590 --> 00:50:46,310 Así que parece que los amarillos especifiqué como 0, y luego rojo especifiqué como 1s. 853 00:50:46,310 --> 00:50:52,190 Así que aquí se ve como puntos de etiqueta y se 854 00:50:52,190 --> 00:50:56,410 parece que sólo quería un poco de tipo de agrupación en esto. 855 00:50:56,410 --> 00:51:01,020 >> Y permítanme seguir adelante y espectáculo que algunas de estas funciones incorporadas. 856 00:51:01,020 --> 00:51:03,580 Así que aquí está lm. 857 00:51:03,580 --> 00:51:06,060 Así que esto es sólo tratar para ajustar una recta a esto. 858 00:51:06,060 --> 00:51:08,640 Entonces, ¿cuál es la mejor manera que puedo encajar tal línea 859 00:51:08,640 --> 00:51:14,020 que será mejor separar este tipo de agrupación. 860 00:51:14,020 --> 00:51:21,790 Y lo ideal es que sólo puede ver que yo sólo corro todos estos comandos 861 00:51:21,790 --> 00:51:25,450 y luego, voy adelante y añadir la línea. 862 00:51:25,450 --> 00:51:28,970 >> Así que esto parece la mejor conjetura. 863 00:51:28,970 --> 00:51:34,150 Se trata de tomar la mejor que minimiza el error en tratar de encajar esta línea. 864 00:51:34,150 --> 00:51:40,000 Obviamente, esto parece un poco bueno, pero no es la mejor. 865 00:51:40,000 --> 00:51:43,130 Y los modelos lineales, en en general, van a ser 866 00:51:43,130 --> 00:51:46,811 realmente grande para la teoría y sólo una especie de los fundamentos básicos de la máquina 867 00:51:46,811 --> 00:51:47,310 el aprendizaje. 868 00:51:47,310 --> 00:51:50,330 Pero en la práctica, usted va a querer hacer algo más general. 869 00:51:50,330 --> 00:51:54,280 >> Por lo que sólo puede intentar ejecutar algo que se llama una red neural. 870 00:51:54,280 --> 00:51:57,110 Estas cosas son cada vez más común. 871 00:51:57,110 --> 00:52:00,530 Y simplemente funcionan fantásticamente para grandes conjuntos de datos. 872 00:52:00,530 --> 00:52:07,080 Así que en este caso, sólo tener-- vamos a ver-- tenemos nrow. 873 00:52:07,080 --> 00:52:09,010 Así nrow es sólo decir el número de filas. 874 00:52:09,010 --> 00:52:11,790 Así que en este caso, tiene 100 observaciones. 875 00:52:11,790 --> 00:52:15,010 >> Así que déjame ir adelante y hacer una red neural. 876 00:52:15,010 --> 00:52:18,620 Así que esto es realmente agradable porque puedo sólo decir nnet 877 00:52:18,620 --> 00:52:21,767 y luego me regresión Y. Así que el Y es que la columna. 878 00:52:21,767 --> 00:52:23,850 Y a continuación, en la regresión las otras dos variables. 879 00:52:23,850 --> 00:52:27,360 Así que este es más corto notación para X1 y X2. 880 00:52:27,360 --> 00:52:29,741 >> Así que vamos a seguir adelante y ejecutar este. 881 00:52:29,741 --> 00:52:30,240 Oh, lo siento. 882 00:52:30,240 --> 00:52:32,260 Necesito funcionar todo esto. 883 00:52:32,260 --> 00:52:37,500 Y esto es sólo la impresión de notación para la rapidez o no rápidamente 884 00:52:37,500 --> 00:52:38,460 convergido. 885 00:52:38,460 --> 00:52:41,420 Así que parece que no convergen. 886 00:52:41,420 --> 00:52:44,970 Así que déjame ir adelante y de impresión lo que esto parece. 887 00:52:44,970 --> 00:52:51,260 >> Consulte aquí está la imagen y aquí es un nivel que muestra lo bien que encaja. 888 00:52:51,260 --> 00:52:56,380 Y esto es sólo-- se puede ver esto que esto es muy, muy agradable. 889 00:52:56,380 --> 00:52:59,400 Incluso podría ser sobreajuste, pero usted puede también 890 00:52:59,400 --> 00:53:03,390 explicar esto con otra técnicas como la validación cruzada. 891 00:53:03,390 --> 00:53:06,180 Y estos también se construyen en R. 892 00:53:06,180 --> 00:53:09,170 >> Y permítanme mostrarles apoyo de máquinas de vectores. 893 00:53:09,170 --> 00:53:12,470 Esta es otra realidad común técnica de aprendizaje automático. 894 00:53:12,470 --> 00:53:18,550 Es muy similar a los modelos lineales, pero utiliza lo que se llama un método kernel. 895 00:53:18,550 --> 00:53:22,790 Y vamos a ver lo bien que lo hace. 896 00:53:22,790 --> 00:53:26,430 Así que este es muy similar a cómo así una red neuronal realiza, 897 00:53:26,430 --> 00:53:27,900 pero es mucho más suave. 898 00:53:27,900 --> 00:53:35,740 Y esto se basa apagado de qué-- cómo el trabajo SVM. 899 00:53:35,740 --> 00:53:40,250 >> Así que esto es sólo una muy visión rápida general 900 00:53:40,250 --> 00:53:43,822 de las funciones incorporadas que puede hacer y también algunos de la exploración de los datos. 901 00:53:43,822 --> 00:53:45,905 Así que permítanme seguir adelante y volver a las diapositivas. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Así que, obviamente, esto es no muy amplia. 904 00:53:53,670 --> 00:53:57,140 Y esto es realmente sólo un teaser que le muestra lo que puede hacer realmente en R. 905 00:53:57,140 --> 00:53:59,100 Así que si usted acaba de querer para aprender más, aquí 906 00:53:59,100 --> 00:54:01,210 son un montón de diferentes recursos. 907 00:54:01,210 --> 00:54:06,890 >> Así que si eres aficionado a los libros de texto o eres simplemente aficionado a leer cosas en línea, 908 00:54:06,890 --> 00:54:09,670 entonces este es un fantástico uno por Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 quien también creó todos estos paquetes muy interesantes. 910 00:54:13,010 --> 00:54:17,420 Si eres aficionado a los vídeos, a continuación, Berkeley tiene una impresionante bootcamp 911 00:54:17,420 --> 00:54:21,060 eso es several-- eso es un poco largo. 912 00:54:21,060 --> 00:54:24,210 Y que le enseñará casi todo lo que usted desea saber sobre R. 913 00:54:24,210 --> 00:54:27,770 >> Y del mismo modo, no hay Codeacademy y todo esto otra clase 914 00:54:27,770 --> 00:54:29,414 sitios web de interactivos. 915 00:54:29,414 --> 00:54:31,580 Ellos también están recibiendo common-- más y más común. 916 00:54:31,580 --> 00:54:33,749 Así que este es muy similar a Codeacademy. 917 00:54:33,749 --> 00:54:35,790 Y, por último, si sólo quiero Comunidad y ayudar, 918 00:54:35,790 --> 00:54:38,800 estos son un montón de cosas que usted puede ir. 919 00:54:38,800 --> 00:54:40,880 Obviamente, todavía utilizar listas de distribución, sólo 920 00:54:40,880 --> 00:54:44,860 como casi todos los demás comunidad lenguaje de programación. 921 00:54:44,860 --> 00:54:47,880 Y #rstats, esto es nuestra comunidad de Twitter. 922 00:54:47,880 --> 00:54:49,580 Eso es en realidad bastante común. 923 00:54:49,580 --> 00:54:50,850 Y entonces el usuario! 924 00:54:50,850 --> 00:54:52,340 Es sólo nuestra conferencia. 925 00:54:52,340 --> 00:54:55,390 >> Y luego, por supuesto, usted puede utilizar todas estas otras cosas de preguntas y respuestas, 926 00:54:55,390 --> 00:54:57,680 como desbordamiento de la pila, Google, y luego GitHub. 927 00:54:57,680 --> 00:55:00,490 Debido a que la mayoría de estos paquetes y gran parte de la comunidad 928 00:55:00,490 --> 00:55:03,420 se centrará en el desarrollo de código porque es de código abierto. 929 00:55:03,420 --> 00:55:05,856 Y es realmente agradable en GitHub. 930 00:55:05,856 --> 00:55:08,730 Y, por último, puede ponerse en contacto conmigo si sólo tienes alguna pregunta rápidos. 931 00:55:08,730 --> 00:55:13,530 Así que usted me puede encontrar en Twitter aquí, mi sitio web, y sólo mi correo electrónico. 932 00:55:13,530 --> 00:55:17,840 Así que espero, que era algo-- sólo un teaser corto 933 00:55:17,840 --> 00:55:20,900 de lo que R es realmente capaz de hacer. 934 00:55:20,900 --> 00:55:23,990 Y es de esperar, que acaba de echa un vistazo a estos tres enlaces 935 00:55:23,990 --> 00:55:25,760 y ver lo que puede hacer más. 936 00:55:25,760 --> 00:55:28,130 Y supongo que eso es sólo sobre él. 937 00:55:28,130 --> 00:55:28,630 Gracias. 938 00:55:28,630 --> 00:55:30,780 >> [Aplausos] 939 00:55:30,780 --> 00:55:31,968