我想通过包含x
来过滤数据帧ID
,其中Hour
包含与匹配testVector
的所有值的ID
行。
ID <- c('A','A','A','A','A','B','B','B','B','C','C')
Hour <- c('0','2','5','6','9','0','2','5','6','0','2')
x <- data.frame(ID, Hour)
x
ID Hour
1 A 0
2 A 2
3 A 5
4 A 6
5 A 9
6 B 0
7 B 2
8 B 5
9 B 6
10 C 0
11 C 2
testVector <- c('0','2','5')
该解决方案应产生以下数据帧:
x
ID Hour
1 A 0
2 A 2
3 A 5
4 A 6
5 A 9
6 B 0
7 B 2
8 B 5
9 B 6
删除了
Hour
C的所有值,因为它缺少Hour
5。请注意,对于与ID
匹配的testVector
,我想保留%in%
的所有值。dplyr解决方案将是理想的选择,但是任何解决方案都值得欢迎。
基于与SO有关的其他相关问题,我猜想我需要
all
和ojit_code的某种组合,但我不太清楚。 最佳答案
这是另一个无需离开管道的dplyr
解决方案:
ID <- c('A','A','A','A','A','B','B','B','B','C','C')
Hour <- c('0','2','5','6','9','0','2','5','6','0','2')
x <- data.frame(ID, Hour)
testVector <- c('0','2','5')
x %>%
group_by(ID) %>%
mutate(contains = Hour %in% testVector) %>%
summarise(all = sum(contains)) %>%
filter(all > 2) %>%
select(-all) %>%
inner_join(x)
## ID Hour
## <fctr> <fctr>
## 1 A 0
## 2 A 2
## 3 A 5
## 4 A 6
## 5 A 9
## 6 B 0
## 7 B 2
## 8 B 5
## 9 B 6
关于r - 过滤与向量的所有值匹配的数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45598397/