[R提示:了解dplyr的case_when()函数

InfoWorld的|2018年5月22日

在做这个第二集更与R,莎朗·马克利斯,在IDG通讯编辑数据和分析总监,展示了如何dplyr的case_when()功能有助于避免大量的嵌套ifelse语句

版权所有©2018Raybet2

嗨,这是莎朗·马克利斯,编辑数据和分析总监IDG通信。

在做这个第二集更与R,我们会看到dplyr case_when()函数如何帮助\避免了大量的嵌套ifelse语句。

对于数据,我有美国各州和他们的估计人群中,你可以在这里看到的列表。

我还设置了R参数显示哪些状态是在每个区域


首先,让我加载状态的人口数据和USRegions文件,并且还装载dplyr包。

并期待在数据的结构。


这里的任务是每个国家分配给其适当的分工。

有几个不同的方法来做到这一点。一种常见的方法是使用的r ifelse功能。在R,如果你想if语句在整个向量同时运行,您通常使用特殊ifelse功能,这是ifelse一个词。

在这种情况下,它可能是这个样子:

这不工作,如果你只得到了几个备选方案。但我发现很难格式比几个选项的详细阅读。而且,很容易让我犯错误与右括号或逗号放错了地方。

而且,如果我按司,而不是地区要分配状态?


这是9级嵌套if-别人的了!

Dplyr的case_when()有一个更简单的格式。这里的语法:


每个if-then语句都有自己的线路。的情况下,如果测试是在左边。然后有一个波浪线,然后将值在右边。每条线都需要一个逗号,除了最后一行。如果你想拥有的一切,你还没有定义一个包罗万象的价值,把最后一个条件为TRUE(我不知道为什么这是真的,但它),然后你的包罗万象的值在右边。完成。

让我给一个简单的例子测试了几个数字是偶数,奇数或 - 如果他们不整的整数 - 都不是。

我将创建数字1,2,3,4,和5.7的向量。现在运行case_when,看看他们是奇数还是偶数。如果除以二时余数为0,它甚至。如果滞留者为1,这是奇怪的。否则,它既不。结果应该是奇,偶,奇,偶,两者都不是。让我运行这段代码块:

而且我们有奇,偶,奇,偶,都不是!

现在让我们看看是什么样子的状态区域的例子。

在这里我输入我的国家人口文件到R,然后添加一个名为司dplyr的mutate功能列。司的值是基于case_when声明。如果该国是我的国东北部的名字向量,我会赋值东北。等等。

让我运行


然后看看结果


看起来挺好的。而且,没有“其他”值,所以所有的州都分配。

这是它为这个情节,感谢收看!对于以上R提示,头向多与R视频网页在bit.ly/morewithR。这是HTTPS B I牛逼周期LŸ有R削减更多,全部小写除了R.那么长!
流行
从IDG.tv精选视频