r - 如何过滤多个条件
问题描述
我正在尝试按国家和立法选举对数据框进行排序——一步可复制到多个不同的政党家族。
到目前为止,我所做的是将主要数据集分类为政党家族(parfam == '10')、“最近”选举(日期 > '201000'),并排除没有相关数据的国家(!国家 %in% 无数据, nodata 是我已经创建的值列表):
eco <- filter(CMPdataset, parfam == '10' & date > '201000' & ! country %in% nodata)
由于一些国家在 2010 年之后的时间段内将多次选举编码到总体数据集 CMPdataset 中,因此我手动检查了数据并使用以下方法手动消除了所有不必要的数据:
eco <- eco[-c(1,8,10,11,13,14,18,20,21,22,23,27,28,31,32,34,35,37), ]
正如您所看到的,这对于较大的数据帧可能非常乏味。所以我想我会结合我知道的公式并想出以下公式(edate 是一个变量,具有 YYYY-MM-DD 格式的特定选举日期,我列出了我在名称下包含的所有特定选举包括选举):
eco2 <- filter(CMPdataset, parfam == '10' & ! country %in% nodata & edate %in% included_elections)
但是,这不会产生任何结果,我也不知道为什么!我可以坚持手工完成,但它非常乏味且不易复制,这就是为什么我更喜欢这样的解决方案。任何帮助将不胜感激!
解决方案
CMPdataset %>% group_by(country) %>%
filter(parfam==`10`, !country %in% nodata, date==max(edate), date>201000)
date==max(date)
将过滤数据框,以便在每个组(即国家/地区)内,仅保留最新选举的行。(另外,条件之间不需要,默认情况&
下它们都加入了&
)。
推荐阅读
- javascript - 使用 jQuery 禁用多个按钮
- scala - Intellij“评估表达式”导致 NoSuchMethodException
- c# - 如何将 HTML TextBoxFor 转换为 Razor 中的标签
- oracle - 按 PostgreSQL 中的主键位置对列进行排序
- javascript - 将 Angular5 / Ionic3 中的本地图像上传到 Firebase 存储
- c# - unity string to binary 转换器输出错误
- php - 如何使用作曲家从 bitbucket 获取文件?
- django - 通过 http 提供的静态资源不会通过 https 提供
- ios - Swift Charts:将饼图移动到视图中的特定位置
- hibernate - Hibernate 逆向工程表到实体类的转换