嗨,这是莎朗·马克利斯,编辑数据和分析总监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.那么长!