[音乐播放] DUSTIN TRAN:你好。 我的名字的达斯汀。 所以我会介绍 在R.数据分析 我自己只是一点点。 我目前的研究生 该工程与应用科学。 我研究的交集 机器学习和统计 因此在研发数据分析 真正的基础是什么 我每天。 R是特别 良好的数据分析 因为它是非常好的原型。 通常,当你做一些 数据分析,很多的问题的 要认知。 所以你只是想有 一些很好的语言 是做刚刚好 内置函数,而不是 具有处理低电平的东西。 所以,在开始的时候,我只是去 介绍什么是R,为什么会 要使用它, 然后去到过的一些演示, 而只是去从那里。 那么,什么是R' R的只是一个语言开发 统计计算 和可视化。 所以,这是什么意思的是, 这是一个非常优秀的语言 对于与处理任何诸如此类的事情 不确定或数据可视化。 所以,你拥有所有这些 概率分布。 有将要 内置函数。 你也将有出色 绘图包。 Python是互相竞争 语言数据。 还有一件事,我觉得是R 为更好的为可视化。 所以你会在演示照见 也仅仅是一个很直观的语言 这只是工作得非常好。 它也是免费和开源的,因为 是什么好语言,我猜。 在这里,一堆刚 关键字扔向你。 它是动态的,这意味着如果你有一个 分配到一个对象的特定类型 比将只在飞行修改。 这是懒惰所以它的聪明 它是如何做计算。 功能意味着它可以真正操作 基于关闭功能等anything-- 任何形式的操纵你 这样做,它会根据关功能。 所以二元运算符,例如, 只是固有的功能。 和一切 你要做的是 将要流掉函数本身。 然后面向对象的为好。 因此,这里是一个XKCD情节。 这不仅是因为我觉得自己像 XKCD是至关重要的任何形式 介绍的,但由于 我喜欢这种感觉真的 锤点,很多的 当你正在做一些数据的时间 分析,问题是不 与其说它运行的速度有多快, 不过多久,它会 带你到编程任务。 所以这里只是分析是否 策略a或b是更有效的。 这将是 你是什​​么 要处理很多在 那种低层次的语言 在那里你正在处理的赛格故障, 内存分配,初始化, 甚至使内置函数。 而这个东西是所有处理 非常,非常优雅的R. 所以只是这一锤 点,最大的瓶颈 将是认知。 这样的数据分析是一个非常困难的问题。 无论你正在做的 机器学习或者你 这样做只是某种 基本数据探索, 你不希望有 取一个文件 然后编译 每一次你的东西 想看看一列的样子, 什么特定的条目以矩阵 看起来像。 所以,你只是想有 一些非常漂亮的界面 您可以运行一个简单的函数 该指数的任何 你想从那里只要运行它。 你需要域名 特定语言这一点。 和R将真正帮助你定义 问题和解决它以这种方式。 因此,这里是显示编程 的R普及,因为它走了一段时间。 所以你可以看到,像2013年或 所以它只是炸毁了极大。 这一直只是因为 在科技产业的巨大发展趋势 关于大数据。 另外,不只是该技术 行业,但真正 任何行业that--因为 很多行业 是那种根本 试图解决这些问题。 通常,你可以有一些不错的 测量这些问题的方式 甚至定义它们或 利用数据解决这些问题。 所以我觉得现在R是第11 在TIOBE最流行的语言 和它的增长至今。 因此,这里的一些 R的特点,具有 包的巨大数量和 所有这些不同的东西。 所以,任何时候你有一个 某些问题,最 时间R将有 该功能为您服务。 因此,无论你想 建立某种机 所谓的学习算法 随机森林或决策树, 甚至试图采取的平均 一个函数或任何这方面的东西, R将有。 如果你这样做你关心 优化,一件事是很常见 在这之后,你就大功告成了原型 某种高级语言, 你会抛出in-- 你只会端口超过 一些低级语言。 有什么好的R是,一旦你 做原型,你可以运行C ++, 或Fortran或任何这些 较低水平的人直接进入R. 所以,这人真的 关于R很酷的功能, 如果你真的关心 优化点。 而且它也确实不错 为Web可视化。 所以D3.js,例如,是 我想另一个研讨会 我们今天提出。 这是真正的真棒 做交互式可视化。 和D3.js假设你有 要绘制某种数据的 和R是能够做一个伟大的方式 导出之前的数据分析 交给D3.js甚至只是运行 D3.js命令为R本身, 以及所有这些 其他库也是如此。 所以这是刚刚出台 什么是R和为什么你可能会使用它。 所以希望,我已经 相信你的东西 大约只是想看看是什么样子的。 所以,我要继续前进,经过 关于R对象的一些基础知识 什么,你真的可以做到。 因此,这里仅仅是一个 一堆数学指令。 所以说,you're--你想建立 语言自己只是想和你 有一堆不同的工具。 操作任何一种你认为你会 要的是几乎将要在R. 因此,这里是2加2。 这是2倍圆周率。 R有一堆内置常量 你会经常使用如pi,E。 然后,这里是7加 runif,所以runif 1。 这是一个功能,是生成 1无规均匀从0到1。 再有3到4个电源。 有平方根。 有日志。 所以日志会做基地 指数本身。 然后,如果你指定一个基地的话, 你可以做任何基地你想要的。 然后这里有一些其他的命令。 所以,你有23 MOD 2。 那么你有剩余。 那么你有科学 如果你还记法 要做到这更多, 更复杂的事情。 因此,这里是分配。 在这样的典型任务 R被用箭头完成 所以它的不足,然后连字符。 所以在这里我只是分配 3向变量val。 然后我打印出来VAL 然后打印出3。 默认情况下,在研发解释,它 将打印出来的东西你 所以你不必指定打印VAL 任何时候你要打印的东西。 你可以做VAL和 然后它会为你做的。 此外,您还可以使用等于技术上 作为赋值运算符。 有轻微的微妙之处 利用箭头之间 操作员和等于 运营商的任务。 主要是按照惯例,每个人都 将只使用箭头操作符。 在这里,我这个分配 斜符号称为1结肠癌6。 这产生从1到6的载体。 这真的很好,因为那时 你刚才分配向量VAL 并且工作本身。 因此,这已经从去 single--一个非常直观的数据 只是双重结构 一些类型的类型的插入载体 并会收集所有 标值给你。 因此,从标会后,你 具有R的对象,这是一个矢量。 向量是任何形式的 收集同一类型的。 因此,这里有一堆载体。 因此,这是数字。 数字是说双R的方式。 因此在默认情况下,任何 号将是一个双。 所以,如果你有C 1.1,3, 负5.7,则c是一个函数。 这样可以将所有三个 号码到载体。 而这将be--所以如果 你注意到3本身, 通常你会假设 这是像的整数, 但由于所有矢量 是相同的类型, 这是双打的向量 或数值在此情况下。 RNORM是一个函数,产生 标准正常variables-- 或标准正常值。 和我指定他们两个。 所以我做RNORM 2,分配,要 开发者,然后我打印出开发者。 因此,这些都是只有两个 随机正常值。 如果你这样做,然后INTS 你关心的整数。 所以,这只是关于内存 分配和节省内存大小。 所以,你将不得不追加 您的号码被资本L. 在一般情况下,这是 的r历史符号 对于一些所谓的长整型。 所以大多数的时候,你会 是处理双打。 如果你曾经稍后会 在优化你的代码, 你可以只添加这些L的 之后或期间, 如果你像预知什么 你要做这些变量。 因此,这里是一个字符向量。 所以,再一次,我串联 三根弦这段时间。 请注意,双串和 单一字符串的R.同 所以,我有亚瑟和马文的等 当我打印出来,所有的人 要显示双字符串。 如果你也想有 双或单串 在你的角色,那么你就可以 无论你的交替串。 所以马文的对 第二元件,这是 去展示 - 你 只是有双串 然后一个字符串 所以这是交替的。 否则,如果你想使用双 字符串操作在双串 当你宣布它,然后 你只需要使用转义符。 所以,你要做的双反斜线字符串。 最后,我们还 有逻辑的载体。 所以logical--所以TRUE 和FALSE,他们是 将全部大写。 然后,再一次,我串联 他们,然后分配他们的bool。 所以布尔变量是要告诉 你TRUE,FALSE和TRUE。 因此,这里是矢量的索引。 所以,在开始的时候,我 我采取了function-- 这就是所谓的序列 - 序为2至12。 而我2采取序列。 所以它会做 2,4,6,8,10和12。 然后,我索引 以获得所述第三元件。 所以有一点要记住的是 是R指标从1开始。 所以丘壑3是要给 你的第三个元素。 这有点与其他的不同 它从零开始的语言。 所以在C或C ++,例如,你 将得到的第四元素。 这里是丘壑3〜5。 这么一件事是 很酷的是你 可以在里面生成临时变量 然后就用它们的飞行。 因此,这里是3〜5。 所以我生成一个向量 3,4和5,然后 我索引获得第三, 第四和第五元素。 所以同样,你可以 只是做摘要 任何类型的载体的 ,让你的索引。 因此,这里是丘壑,然后 第一,第三,第六元件。 然后,如果你想 做一个补充, 所以你只要做减号 事后那会 给你的一切,是不是 第一,第三,或第六元件。 因此,这将是4,8和10。 如果你想获得 更先进的, 您可以连接布尔向量。 因此,这指数是要给你 长度为6的这个布尔向量。 所以,代表TRUE逗号3。 这将重复为TRUE三次。 因此,这会给你一个 矢量TRUE,TRUE,TRUE。 代表FALSE 4--这是要给你 的FALSE,FALSE,FALSE,FALSE的向量。 然后C是将串联 这两个布尔在一起。 所以,你会得到三个 TRUEs然后4 FALSEs。 所以,当你的索引丘壑,你 会得到TRUE,TRUE,TRUE。 所以这是怎么回事说是, 我想这三个要素。 然后FALSE,FALSE, FALSE,FALSE是怎么回事 说没有,我不希望这些元素 所以它不会来回报他们。 我想有实际上在这里一个错字 因为这是说重复TRUE 3 重复FALSE 4,和技术上,你 只有六个要素如此重复FALSE, 它应该是重复FALSE 3。 我觉得R也足够聪明,这样的 如果你只是指定4在这里,然后 它甚至不会出错了。 它只是给你这个值。 所以它会忽略了第四FALSE。 因此,这里是矢量分配。 所以set.seed--这只是设置 种子伪随机数。 所以我设置的种子 42,这意味着如果我产生 三个随机正常 值,然后如果你 运行set.seed你自己 电脑使用相同的值42, 然后您还可以获得 同样的三个随机法线。 因此,这是真的好 可重复性。 通常情况下,当你做一些 排序科学分析, 你想设置的种子。 这样,其他科学家可以只 重现你已经完全相同的代码 这样做,因为他们将有确切 相同的随机变量that--或随机 你已经取出,以及价值观。 这样一来,矢量分配 这里示出了瓦尔斯1至2。 因此,需要前两个元素 丘壑,然后将它们分配给0。 然后,你也可以只是做了 类似的事情与布尔。 所以瓦尔斯不等于0--该旨意 给你一个矢量FALSE,FALSE,TRUE 在这种情况下。 然后,它会说什么 那些是真实的指标, 然后它会分配一个5。 因此,需要第三个元素 在这里,然后将其分配给5。 这是非常好的 相比低级语言 在那里你必须使用循环 做这一切矢量的东西 因为它只是非常直观 这是一个单一的单行。 这有什么了不起 矢量符号 是,在R,这些都是排序 内置使他们几乎一样快 因为这样做在一个低级语言如 反对做一个for循环在研发 再有它做 动态索引本身。 而这会比做慢 这种量化的东西 它可以并行,在那里做 它这样做的线程基本。 因此,这里是矢量操作。 所以我生成一个值1到3, 分配给该VEC 1,3至5,VEC2, 加在一起。 它增加了他们的组件,因此明智的 它是1加上3,2加4,等等。 VEC 1次VEC2。 这乘以2 明智的价值观的组成部分。 所以它的1倍3,2次 4,然后3次5。 然后,同样,你也可以做 comparisons--逻辑比较。 因此,它是FALSE FALSE TRUE在这 情况下,因为1是不大于3, 图2是不大于4。 这是,我猜,另一个错字,3 绝对不大于5。 是啊。 所以你可以做所有 这些简单的操作 因为他们的继承 从自己的类。 所以这只是个载体。 这就是那种最根本的 ř对象,因为给定的载体, 你可以构建更高级的对象。 所以这里有一个矩阵。 这在本质上是抽象 一个什么样的矩阵本身。 因此,在这种情况下,它的三个不同的 矢量,其中,每一个是一列, 或者你可以考虑 因为每一个是一排。 所以,我存储从1矩阵 9,然后我指定3行。 因此,1至9会给你一个向量1, 2,3,4,5,6,和一路9。 有一件事也记住的是, ř专卖店在列的主要格式值。 所以,换句话说,当你看到1 至9,它要储存them-- 这将是1,2, 在第一列3, 然后它会做4,5, 在第二列6, 然后7,8,9,在第三列中。 这里有一些其他的 您可以使用常用功能。 因此昏暗的垫子,这会给你 矩阵的尺寸。 它会回报你 维度的向量。 因此,在这种情况下,因为 我们的矩阵为3×3, 它会给你一个 数字矢量是3 3。 这里只是展示 矩阵乘法。 所以通常情况下,如果你只是做 asterisk--所以垫星号mat-- 这将是 组件明智的操作 或者什么所谓的阿达玛产品。 所以它会做的每 元素组件明智的。 但是,如果你想 矩阵multiplication-- 所以第一行时间乘以 第二矩阵的第一列 所以on--你会使用 这个百分比操作。 和垫吨只是一个 操作转。 所以我说,走在转 的矩阵,由矩阵乘以 本身。 然后它会 回报给你另外3 3矩阵,显示 你想要的产品。 所以这是矩阵。 这里是所谓的数据帧。 数据帧,你能想到的作为 一个矩阵,但是每列本身 将是不同类型的。 那么,什么是真正酷的数据 帧是在数据分析本身, 你将拥有这一切 异构数据,所有这些真的 乱七八糟的东西,其中每一列 本身可以是不同类型的。 所以在这里我想说的创建 数据帧中,执行整数1至3个, 然后也有一个特征向量。 这样我就可以通过指数 这些列 然后我会得到的值本身。 而且你还可以做一些 对数据帧的操作。 和大部分的时间你的时候 进行数据分析,或某种 预处理,你会 与这些数据结构工作 其中每个列将 是不同类型的。 最后,所以这些基本上都是刚 在R.列出四个基本目标 将只收取任何 你想要的其他对象。 因此,将这种存储到一个 您可以轻松地访问变量。 所以在这里,我要带一个列表。 我说的东西等于3。 所以,我要在一个元素 列表中,这就是所谓的东西, 而这将有值3。 我还可以创建一个矩阵。 因此,这是1至4和端排 等于2,所以由2矩阵2。 此外,在列表中,这就是所谓的垫子。 moreStuff,一个字符串, 甚至另一个列表本身。 所以这是一个列表,是5和熊。 因此它具有值5和它 有字符串熊 和它的内部的列表的列表。 所以,你可以有这些 递归的东西在哪里 你有another--一个 在类型类型。 所以同样,你可以有一个矩阵 在另一个矩阵等。 和一个列表仅仅是一个很好的方法 收集和汇总的 所有这些不同的对象。 最后,这里是以防万一帮助 这是刚刚经历了非常迅速。 所以,任何时候你困惑 关于某种功能, 你可以做到这一点的功能帮助。 所以你可以做帮助矩阵 或问号矩阵。 并帮助和问号都 只是简写同样的事情 所以他们的别名。 流明是一个函数,它 只是做一个线性模型。 但如果你只是不知道怎么说 作品中,你可以做流明帮助 而且会给你一些 这类文档的 看起来有点像 在Unix中,在手册页 你有一个简短的说明什么 确实如此,亦是它的参数是, 它返回,并就如何只提示 使用它,并且一些实施例也是如此。 因此,让我继续前进,显示 使用R. OK了一些演示。 于是我去了很 很快就在数据 结构和某种的 op--一些操作。 下面是一些功能。 所以在这里我只是去 来定义的函数。 所以,我还使用 赋值运算符在这里, 然后我说 声明为一个函数。 而它需要的x值。 所以,这是你想要的任何值 而我要返回X本身。 因此,这是身份的功能。 什么是酷这个 相比其它语言 和另一低级别 语言是X 可以是任何类型本身 它会返回一个类型。 所以,你可以imagine--所以让 我只想赶紧跑了。 抱歉。 这么一件事我还要提到 就是这个编辑器,我使用 被称为rstudio。 这是所谓的IDE。 还有一件事是 非常好的关于这个 的是,它包含了很多 你想通过自己做R中的事情 只是很直观。 因此,这里是一个解释控制台。 所以同样,你也可以得到这个 只是做一个大写R.控制台原料 而这正是 同样的事情作为控制台。 所以,我可以做ID功能X,X,X。 和then--然后该 将被罚款本身。 所以rstudio是伟大的 因为它有控制台。 它也有文件 你想运行。 然后它有一些变数 您可以在环境中看到的。 然后,如果你有 做图,那么你 可以只看到它在这里,相对于 管理所有这些不同的窗口 由自己决定。 其实,我个人用Vim,但我 感觉rst​​udio是优秀的只是 为得到一个好主意 如何使用R.一般, 当你试图 学习一些新的任务, 你不想处理 太多的事情一次。 所以,R是只是一个very-- rstudio 是学习R的非常好的方法 而无需处理 所有这些其他的东西。 所以在这里我跑ID打招呼。 这将返回打招呼。 编号123。 这里是整数的向量。 那么同样的,因为你可以 采取某种价值, 你可以做回国ID X所以它返回1234和5。 并让我告诉你, 这确实是一个整数。 同样,如果你这样做类 ID X,这将是整数。 然后,你也可以 比较这两个,这是真的。 所以我检查,如果ID x的 等于等于x和通知 它给你两个TRUEs。 因此,这是不是说有 两个对象相同, 但是每个条目的 在矢量是相同的。 这是bounded.compare。 因此,这是稍微复杂 在于:它具有一个if条件和其他 然后需要两个 在一个时间参数。 所以x是任何类型。 而且我说这 第二个参数是一个。 这可以是任何为好。 但默认情况下,它会采取 5,如果你不指定任何东西。 所以在这里我要说 如果x大于一。 所以,如果我不指定,它 说,如果x大于5, 然后我会返回TRUE。 否则,我将返回FALSE。 因此,让我继续前进,定义这个。 现在我要去 运行bounded.compare 3。 所以说,在3少 than--比5 3更大。 不,这不是那么FALSE。 和bounded.compare 3,我要去 用等于2来比较它。 所以,现在我要说的是,现在我 想别的东西。 所以我要去说,你应该是2。 我可以做这样的 符号或者我说等于2。 这是一个更可读 在当你 看着这些真的 复杂功能 采取多种arguments--这 可几十oftentimes--只是说 A等于2是更可读的 你这样以后在未来 你会知道你在做什么。 因此,在这种情况下,我 俗话说比2 3更大。 是的。 同样,我也只是删除 这一点,并说,比2 3更大 其中a等于2。 而这也是事实。 是吗? 听众:你 按行执行行? DUSTIN TRAN:是的,我是。 所以我在做什么这里是 采取这一文本document-- 什么是伟大的关于rstudio是 我可以只运行一个short--一个快捷键。 所以我在做控制输入。 然后,我走了 文本文档中的行 然后将在控制台中。 所以在这里我要说,bounded.compare 和我做控制-X。 所以,我可以做跑这里。 然后那会走 行,然后把它放在这里。 然后同样地,我可以在这里做运行。 然后它会自顾自地定义 线成这样的控制台。 如果你也注意到了花 括号是有类似于C的语法。 x--如果if条件也 要使用括号,然后 你可以使用别的。 另外一个是,如果别人。 因此,这将是X 等于等于一,例如。 然后我要去 回到这里的东西。 请注意,有两种不同的 这里的东西这回事。 其一是,在这里我指定 返回值TRUE。 在这里,我只是说X。 所以R将通常默认 取最后arguments-- 或取代码的最后一行, 这将是它的返回。 所以在这里,这是相同的 事情做回X。 而刚刚给你看。 然后,它会工作就是这样。 因此,让我继续这样做。 所以,如果别的。 真的,我可以返回 什么我想。 所以我甚至不有 返回布尔所有的时间, 我可以返回别的东西。 所以我可以做回熊。 所以,如果x等于等于, 它会返回熊。 否则,它会返回TRUE。 我也可以做一个向量 还是真的什么。 与通常静态 类型化的语言, 你必须在这里指定一​​个类型。 并发现它可以只是任何东西。 R是智能不够,它 只是做到这一点,它会正常工作。 因此,让我定义这个。 Unexpected--哦对不起。 这应该是一个大括号在这里。 好不好。 酷。 行。 所以,现在让我们来比较3和等于3。 所以应该return-- yeah--值熊。 所以,现在更普遍的是像 那么其他的数据结构。 所以,你有这个功能。 这是去上班任何形式的 ,价值就像3或任何数字 换句话说,双重。 但对于像一个载体。 所以,如果你do--所以我会发生什么 要分配VAL,比方说,4至6个。 所以,如果我回到这,这 为4,5,6的载体。 现在,让我们看看会发生什么 如果我做bounded.compare VAL。 因此,这将会给你15 1251。 因此,换句话说,它说 如果你看一下这个条件 所以说,x是少 比什么的。 因此,这是稍微 令人困惑,因为现在 你只是不知道发生了什么事情。 所以我想一件事是真的 良好只是想调试 是,你可以做val为更大 不是,看看会发生什么存在。 所以val--一个是默认的5等 我们只是做VAL大于5。 所以这是一个矢量FALSE FALSE TRUE。 所以,当你看现在 这一点,这是怎么回事,如果说, 然后它会给予你这个 为FALSE FALSE向量TRUE。 所以,当你通过这个入R,R 不知道你在做什么。 因为它需要一个单一的 值,这是一布尔值,而现在 你给它布尔向量。 因此,通过默认,R是刚 接下来要说什么的挫折感, 我会假设你 要采取的第一个元素在这里。 所以,我要say--我要去 假设这是假的。 所以它会说 不,这是不对的。 同样,这将 是VAL等于等于。 不,对不起5。 而它也将是错误的为好。 所以它会说没有, 事实并非如此,以及因此它的 要返回该最后一个。 因此,这可以是一个好事还是坏事 的事情,这取决于你如何看待它。 因为当你 创建这些功能, 你是不知道发生了什么事情。 所以有时候你会希望有一个错误, 或者你只是想警告。 在这种情况下,R不这样做。 所以,这真的取决于 您可以根据掉什么 你认为语言 应该在此情况下 如果你通过在布尔向量 当你正在做的,如果条件。 因此,让我们说,你有原来的 之一,如果其他人返回TRUE和你 会返回FALSE。 抽象的这么一种方式 这是说我 甚至不需要这个条件的事情。 另一件事,我可以做的就是 返回值本身。 所以,如果你发现,如果你 做val为大于5, 这将返回一个 矢量FALSE FALSE TRUE。 也许这就是你 想要bounded.compare。 要返回布尔向量 它比较每个值 对自己负责。 所以,你可以做bounded.compare 函数x,a等于5。 然后,而不是做 这一点,如果其他条件, 我只是要回 x是大于5。 所以,如果这是真的,那么 它会返回TRUE。 然后,如果它不是,它是 会返回FALSE。 这将工作 任何这些结构。 这样我就可以bounded.compareç1 6或9 然后我会说等于6, 例如。 然后它会 给你正确的布尔 矢量你设计。 所以,那些只是功能 现在让我 告诉你一些互动的视觉效果。 我不认为我实际上有 无线网络连接,在这里,所以让我继续前进 并跳过这个我猜。 但有一点很酷 但是,如果你只是 要测试一堆 不同的数据的命令, 有一堆不同的数据集 那些已经预先加载到R. 所以其中之一是 所谓的虹膜数据集。 这是最知名的1 那些在机器学习。 你通常只是做某种 测试用例,看看你的代码运行。 所以让我们只检查虹膜是什么。 所以这个事情是怎么回事 成为一个数据帧。 而且它是一种长的,因为 我刚打印出来光圈。 它打印出整个事情。 因此它具有所有这些不同的名称。 因此,虹膜是一家集 不同的花。 在这种情况下,它告诉 你它的品种, 所有这些不同的宽度和 在萼片和花瓣的长度。 因此,通常,如果 要打印虹膜, 例如,你不想拥有它 做了这一切,因为这可以接管 整个控制台。 这么一件事是真的 好的是头功能。 所以,如果你只是做头 虹膜,这会给你 第5行,或六,我猜。 然后好了,你 可以直接在这里指定。 所以20--这会给 你的第一个20行。 实际上我是那种 的惊讶,这 给我6所以让我继续前进 并检查iris--或头部,对不起。 在这里,它会给 您的文档 价值头上做什么。 因此,它返回第一个 或最后一个对象。 然后我要去 看一下默认值。 然后它说的默认 法头x和n等于6L。 因此,这将返回前六要素。 同样,如果你在这里看到的,我 没有指定n等于6。 默认情况下它使用6,我猜。 然后,如果我要指定一个特定的 值,那么我可以查看这一点。 所以这是一些简单的命令和 这里的另一个这just--好, 我can--这实际上是 稍微复杂一些, 但是这只是走班 虹膜数据集的每一列。 因此,这将告诉你什么是所有这些 列是在它们的类型的条款。 所以,萼片长数字, 萼片宽度的数字。 所有这些值都只是数字 因为你可以从这个数据 组织这些都是 一切都将数字。 和物种列 将是一个因素。 所以通常情况下,你会认为 这就像一个字符串。 但如果你只是做irisSpecies, 然后我会做的头5, 并且这是要打印 出的前五个值。 然后注意到这个水平。 因此,这是saying--这为R的方式 具有分类变量。 因此,而不是仅仅 具有文字串, 它具有指定的水平 其中,这些东西都是。 所以我们可以说irisSpecies 1。 所以,你想在这里做什么,我 子集这一物种列。 因此,这需要的 种柱中,然后 它的索引来获得的第一个元素。 因此,这应该给你setosa。 它也给你的水平在这里。 所以,你也可以比较 这向字符setosa 而这是不会 为TRUE,因为一个 是一种不同的类型中的另一个。 或者,我想这是真的,因为ř 比这更聪明。 它着眼于这一点,然后 说,也许这就是你想要的。 所以它会说字符 串setosa是一样的这一个。 然后同样,您可以 也正好抓住这些像等。 所以这只是某种 数据集的快速指令。 因此,这里的一些数据的探索。 所以这是一个多一点 涉及数据分析。 这是从一些 集训在研发在伯克利分校。 所以,国外的图书馆。 所以我打算在加载 库,被称为外国人。 因此,这是要给我read.dta 所以假设我有这样的数据集。 这被存储在当前 我的工作控制台目录。 所以让我们只看到了什么 工作目录。 因此,这里是我的工作目录。 和读取点的数据,这 的事情,是说这个文件 位于数据文件夹 这个当前工作目录。 并且read.dta这不是 默认命令。 我想我在装好了。 IEI假设我已经装这。 但如此read.dta不会 是一个缺省的命令。 这就是为什么你将有 在这个库加载package-- 这个包所谓外。 如果你没有 包,我觉得 外国是内置的一个。 否则,你也可以 做install.packages 这将安装该软件包。 这会给你R.哦,不。 然后我只是要阻止 这一点,因为我已经拥有它。 但是,什么是真正好的关于R 的是,包管理 系统是非常优雅。 因为它会保存一切 真的很好你。 所以在这种情况下,这将存储 它在,我相信,在这里这个库。 所以,任何时候你想 安装新的软件包, 它只是这么简单 做install.packages 和R将管理所有 包你。 所以,你不必做一下 蟒蛇,在那里你有外包装 像纸经理 你在哪里蟒蛇 您安装doing--的 Python的外面包 然后尝试自己运行它们。 因此,这是非常好的方式。 和install.packages需要互联网。 它需要从一个服务器 和存储库 收集所有的 包被称为CRAN。 你可以指定排序镜 你想从下载的软件包。 所以在这里我采取这一数据集。 我读它使用此功能。 因此,让我继续前进,做到这一点。 因此,让我们假设 你有这样的数据集 你有绝对的 不知道它是什么。 这实际上出现 相当经常在业内 在那里,你只是有这些 吨,吨乱七八糟的东西 他们是令人难以置信的未标记。 所以在这里我有这个 数据集,我不知道 它是什么,所以我只是 显示检查出来。 所以,我要先做头。 所以,我检查了前六 什么这个数据集列。 因此,这是一个国家,pres04,然后 所有这些不同的排序列。 什么是有趣的 在这里,我想,是你 会认为这看起来 像某种选举。 我想刚刚从 查看文件 名称这是某种集合 有关候选人或选民数据 谁投票给特定的总统 或总统候选人 在2004年大选。 因此,这里是值1,2 如此存储的一种方式 总统候选人 他们的名字。 在这种情况下,它看起来像 他们只是整数值。 所以,2004年,这是布什 与克里相信。 现在,让我们说你只是不知道 无论是1对应于布什或2 对应于克里或与 等等等等,对不对? 而这,只是为了我, 一个相当普遍的问题。 那么,你可以在这种情况下怎么办? 因此,让我们检查所有这些其他的事情。 状态,我假设这 来自不同的状态。 partyid收入。 让我们来看看ID,然后 因此,也许有一件事你可以做的是 看看每个观察 有共和党一partyid 还是民主党或什么的。 那么就让我们来看看什么是partyid。 所以我要带 DAT,然后我要去 要做到这一点美元符号 我以前做过运营商 并且这将 子集到该列。 然后我将头这 20,正好看到了这个样子。 因此,这只是一堆港定居人士。 因此,换句话说,必须 缺少有关这些人的数据。 但是你也注意到这一点 的DAT partyid是一个因素 所以这给你不同的类别。 因此,换句话说,partyid可以采取 民主党人,共和党人,独立, 还是其他什么东西。 因此,让我们继续前进,让我们 看到这些is--哦,OK的。 所以,我要子集 以partyid然后 看看哪些是 民主党人,例如。 这是要给你一个布尔值, TRUEs和FALSEs巨大布尔。 现在,让我们说,我想 以子集这些家伙。 因此,这是要采取我的DAT和 子集的意见为准 有partyid平等等于民主党。 这是相当长的,因为 有这么多的人。 所以,现在,我要前往这20。 正如你注意到,等于等号 是在你感兴趣的 already--你还包括在NAS。 所以在这种情况下,你仍然不能得到 任何信息,因为现在你有来港定居 而你只是想看看它的 观察对应民主党 而不是这些缺失的值本身。 所以,你将如何摆脱这些来港定居的? 所以在这里我只是用在了我的钥匙 游标,然后说走动。 然后在这里我只是去 说is.na datpartyid。 因此,这与和将采取 两个不同的布尔向量 并说这将是 TRUE和FALSE的例子。 所以它会做这个组件明智的。 所以在这里我想说的起飞 数据帧,子集 到对应于民主党人的那些, 并删除其中的任何不属于NA。 因此,这will--应 给你的东西。 让我们来看看is.na. 让我们试着is.na datpartyid。 这应该给你 - sorry--只是一个布尔向量。 然后,因为它是如此漫长, 我要去子集20。 好不好。 所以这应该工作。 而这一次也将是TRUEs。 啊,所以我在这里的错误是I'm--我 使用C ++和R互换,所以我做 这个错误的所有时间。 在与运营商的 其实你想要的。 不希望使用两个 &符号,只是一个单一的之一。 好不好。 所以,让我们来看看。 所以我们子集化的 partyid他们是民主党 而他们没有缺失值。 现在让我们来看看 哪些,他们投票支持。 因此,它似乎最喜欢的 他们投票支持1。 所以我要继续前进 并说这是克里。 同样,你可以 还去共和党 并希望,这应该给你2。 这只是一堆不同的列。 事实上,这是2。 所以partyid所有共和党, 他们大多投票支持2。 所以它看起来,只是 通过看这个, 共和党将是 一个very--或partyid 将是一个非常 在确定大因素 哪位候选人,他们是 会投票支持。 这是一般的明显事实。 这符合您的 直觉的,当然。 如此看来像我 时间不多了这样 让我应该继续 并展示一些快速的图像。 因此,这里的东西是轻微 更复杂的可视化。 所以在这种情况下,这是一个很 简单只是检查分析什么 '04总统是。 所以在这种情况下,假设你 要回答这个问题。 因此,假设我们想知道投票 在2004年的总统选举中的行为 以及如何通过不同的比赛。 所以,你不仅要 看到投票行为, 但你希望每个来子集 那种种族和总结了。 你只能告诉 通过这种复杂的符号 这是一种越来越朦胧。 这样的更先进的研发1 包是最近也是一种 被称为dplyr。 所以它是这一个就在这里。 和ggg-- ggplot2是一个不错的 做更好的可视化方式 比内置于一体。 所以我要加载 这两个库。 然后,我会去 提前并运行此命令。 你可以把它当作一个黑盒子。 这是怎么回事的是,这条管道 运营商正在通过这一说法 到这里。 所以我说GROUP BY DAT 种族和当时的总统04。 然后,所有这些其他命令 被过滤,然后总结 在那里我做的数量和 然后我绘制在这里。 OK凉爽。 因此,让我们继续前进, 看看这是什么样子。 因此,这里发生了什么,是我 刚才绘制的每个种族和然后 哪些,他们投票支持。 与这两个不同的 值对应于2和1。 如果你想更 优雅的,你也可以 只是指定2 Kerry--或 2是布什,然后1克里。 你也可以拥有 在你的传奇。 而且你还可以拆分这些柱状图。 因为有一件事是 ,如果你注意到, 这不是很容易识别 其中这两个值都较大。 这么一件事,你会想 做的是利用这个蓝色区域 ,只是将它在这里等你 可通过侧比较这两个侧面。 我想这是我的东西 没有时间做的事情, 但是这也很容易做到。 你可以看看 手册页ggplot的。 所以,你可以做ggplot像 这一点,读入该手册页。 所以,让我迅速 告诉你一些很酷的事情。 让我们继续前进,去to--只是一个 应用机器学习。 因此,让我们说我们有这三个 封装所以我打算在加载这些。 因此,这只是输出一些 信息后,我装的东西。 所以我说这句话的read.csv, 此数据集,现在 我要继续前进,并期待和 看看这是什么数据集内。 因此,第一个20的观察。 所以我只是有X1,X2,和Y.因此, 似乎像一堆这些值 是从也许20到80左右。 然后同样的X2,然后 此ý似乎是标签0和1。 为了验证这一点,我可以 只是做汇总数据X1。 然后同样的 所有这些其他列。 所以总结的快捷方式 只是显示你快速的价值观。 哦,对不起。 这应该是Y. 所以在这种情况下,给出了 分位数,中位数,马克塞斯为好。 在这种情况下,DATAY,可以看到 它只是将是0和1。 也平均在说 0.6,只是意味着它 好像我比0以上1秒。 因此,让我继续前进,显示 你这是什么样子。 所以我只是要绘制这样。 让我们来看看如何清除此。 哦确定。 好不好。 因此,这是什么样子。 所以好像我指定的黄色 为0,然后冲我指定为1秒。 所以在这里它看起来像 标注点和它 好像你只是想要一些 这类群集在此的。 并让我继续前进,显示 您其中的一些内置的功能。 因此,这里是流明。 因此,这只是试图 以适应线路于此。 那么,什么是最好的方法 我能适应这样的行 它将最好分开 这种集群。 理想情况下,你可以看到 我只是运行这些命令 然后,我要去 提前并添加行。 因此,这似乎是最好的猜测。 它采取的最好的一个最小化 在试图将这一行的错误。 很显然,这看起来种 不错,但不是最好的。 和线性模型,在 一般情况下,将要 真正伟大的理论,只是排序 机器的建筑基础的 学习。 但在实践中,你会 想要做一些更普遍。 所以,你可以尝试运行 一些所谓的神经网络。 这些东西 越来越普遍。 他们只是工作飞驰 用于大型数据集。 因此,在这种情况下,我们仅have-- 让我们see--我们有nrow。 所以nrow只是说行数。 因此,在这种情况下,我 有100个观测值。 因此,让我继续前进, 使一个神经网络。 因此,这是非常好的 因为我只能说NNET 然后我回归Y. 所以Y是该列。 然后回归它 其他两个变量。 因此,这是短 符号为X1和X2。 因此,让我们继续前进并运行此。 哦,对不起。 我需要运行这件事。 而这仅仅是印刷符号 如何迅速或不能很快就 收敛。 所以看起来它没有收敛。 因此,让我继续前进,打印 出了这个样子。 看到这里的图片,这里是 轮廓呈现,以及它如何适应。 这是just--你可以看到 这一点,这是非常,非常漂亮。 它甚至可能是 过学习,但你也可以 考虑到这一点与其他 技术,如交叉验证。 而这些也被内置到R. 并让我告诉你 支持向量机。 这是另一种常见的真 技术,机器学习。 它是非常相似的线性模型,但 它使用什么叫做核方法。 让我们来看看如何好,做。 所以这个人是非常类似于如何 还有一个神经网络进行, 但它更顺畅。 而这是基于关 对what--支持向量机是如何工作的。 所以,这只是一个非常 一些快速概述 的内置功能,你可以做 而也有一些数据探索。 所以,让我继续前进 并返回到幻灯片。 所以,很显然,这是 不是很全面。 这真的只是一个传情 显示你什么,你真的可以做R. 所以,如果你只是想 要了解更多信息,点击这里 是一群不同的资源。 所以,如果你喜欢的教科书或者你 只是喜欢阅读网上的东西, 那么这是一个梦幻般的 一个接哈德利韦翰, 谁也创造了这一切 真的很酷包。 如果你喜欢的视频,然后 伯克利有一个真棒集训 这是several--这是种很长。 它会教你几乎 一切你想知道R. 同样,还有Codeacademy 而所有这些其他类型 互动网站。 它们也越来越 common--越来越普遍。 所以,这是非常相似Codeacademy。 最后,如​​果你只是 希望社区和帮助, 这些都是一堆 事情你可以去。 很显然,我们仍然 使用邮件列表,只 像几乎所有其他 编程语言社区。 和#rstats,这是 我们的社区微博。 这实际上相当普遍。 然后用户! 只是我们的会议。 然后,当然,你可以 使用所有这些其他的Q&A的事, 像堆栈溢出, 谷歌,然后GitHub上。 因为大多数这些包 和很多社区 围绕发展将集中 代码,因为它是开源的。 它只是真的在GitHub上好看。 最后,你可以,如果我联系 你只要有任何简单的问题。 所以,你可以找到我的Twitter在这里, 我的网站,只是我的电子邮件。 所以希望,这是 something--只有很短的传情 什么R是真正能够做到的事情。 并希望,你只要 看看这三个环节 看看你可以做更多。 我想这只是它。 谢谢。 [掌声]