RStudio:
假设我有一组数据:
# Circle X Y velocity
1 A 21 8 0
2 A 32 17 4
3 A 23 32 5
4 B 22 4 0
5 B 43 12 10
6 B 12 0 2
7 C 12 4 0
.....
我希望过滤掉所有最大速度大于 9 的圆圈(例如,第 5 行在该点显示圆圈 B 的速度大于 9(圆圈 B 的最大速度),因此第 4-6 行应删除为他们都属于圈B)。有没有人知道如何在 Rstudio 中做到这一点?
答案 0 :(得分:1)
试试这个:
df<- data.frame(Circle = c('A','A','A','B','B','B','C'),
X=c(21,32,23,22,43,12,12),
Y =c(8,17,32,4,12,0,4),
velocity=c(0,4,5,0,10,2,0))
df %>% group_by(Circle) %>% filter(max(velocity)<=9)
答案 1 :(得分:0)
一种方法是保留所有值都小于等于 9 的组。
library(dplyr)
df %>% group_by(Circle) %>% filter(all(velocity <= 9))
#Also
#df %>% group_by(Circle) %>% filter(!any(velocity > 9))
# Circle X Y velocity
# <chr> <int> <int> <int>
#1 A 21 8 0
#2 A 32 17 4
#3 A 23 32 5
#4 C 12 4 0
也可以用基数 R 和 data.table
#Base R
subset(df, ave(velocity <= 9, Circle, FUN = all))
#data table
library(data.table)
setDT(df)[, .SD[all(velocity <= 9)], Circle]