r - R - 过滤多年来保持不变的观察结果
问题描述
我准备了一个示例data.table:
testTable <- data.table(years = rep(c(rep((2014),3),rep((2015),3), rep((2016),3)), 2),
policy = c(rep("A", 9), rep("B",9)),
destination = rep(c("Paris", "London", "Berlin"), 6))
testTable[c(1,5,8), destination := c("Moskaw", "Milano", "Valencia")]
> testTable
years policy destination
1: 2014 A Moskaw
2: 2014 A London
3: 2014 A Berlin
4: 2015 A Paris
5: 2015 A Milano
6: 2015 A Berlin
7: 2016 A Paris
8: 2016 A Valencia
9: 2016 A Berlin
10: 2014 B Paris
11: 2014 B London
12: 2014 B Berlin
13: 2015 B Paris
14: 2015 B London
15: 2015 B Berlin
16: 2016 B Paris
17: 2016 B London
18: 2016 B Berlin
在这里,我只想在destination
数据中保留所有年份相同的观察结果。在这个例子中,我只选择了 3 年的政策,但真实数据也可能有 2,3 和 4 年的历史混合在一个 data.table 中。
期望的结果是:
> testTable
years policy destination
3: 2014 A Berlin
6: 2015 A Berlin
9: 2016 A Berlin
10: 2014 B Paris
11: 2014 B London
12: 2014 B Berlin
13: 2015 B Paris
14: 2015 B London
15: 2015 B Berlin
16: 2016 B Paris
17: 2016 B London
18: 2016 B Berlin
Any ides?
我尝试使用dcast()
,然后我想过滤那些在之后的所有列中具有相同条目的行policy
,但是我意识到这会dcast()
自动将我的字符变量destination
转换为数字并使用长度聚合我的数据:
Aggregate function missing, defaulting to 'length'
注意:我的数据将有数百个观察结果。
解决方案
我们可以为 each过滤destination
出现在 each中的那些 common 。years
policy
library(data.table)
testTable[testTable[, destination %in%
Reduce(intersect, split(destination, years)), policy]$V1]
# years policy destination
# 1: 2014 A Berlin
# 2: 2015 A Berlin
# 3: 2016 A Berlin
# 4: 2014 B Paris
# 5: 2014 B London
# 6: 2014 B Berlin
# 7: 2015 B Paris
# 8: 2015 B London
# 9: 2015 B Berlin
#10: 2016 B Paris
#11: 2016 B London
#12: 2016 B Berlin
并在dplyr
:
library(dplyr)
testTable %>%
group_by(policy) %>%
filter(destination %in% Reduce(intersect, split(destination, years)))
推荐阅读
- terraform-provider-aws - Terraform 错误 - 错误:需要参数或块定义
- javascript - 如何使按钮之间的空间无法突出显示
- java - java - 如何在java类中获取层列表项ID?
- python - 为什么这个 tensorflow.keras 代码会占用大量内存?
- javascript - 为什么即使数据库本身为真,MySQL 也会向客户端发送一个假布尔值?
- vb.net - DataGridView 数据源集列
- conda - conda build - 添加大量测试数据的推荐方法
- python - Python 一班带功能
- ruby-on-rails - 如果在 api 中创建失败,页面应该在哪里重定向
- asp.net-web-api - Automapper 映射两个不同结构的列表类以及成员显式映射