R 通过对ID列进行分组,使用阈值对列进行子集划分

R 通过对ID列进行分组,使用阈值对列进行子集划分,r,dataframe,subset,R,Dataframe,Subset,我有一个从中获得的df(例如) 对于ID A,30是中位数,30-7.5=22.5,因此A的输出中仅显示10。B也是如此 请指导我如何做这件事 试试看 library(dplyr) df1 %>% group_by(ID) %>% filter(Point_A < median(Point_A) - 7.5, Point_B < median(Point_B) - 7.5) 编辑 我可能误解了你最初的问题。

我有一个从中获得的df(例如)

对于ID A,30是中位数,30-7.5=22.5,因此A的输出中仅显示10。B也是如此

请指导我如何做这件事

试试看

library(dplyr)
df1 %>% group_by(ID) %>% filter(Point_A < median(Point_A) - 7.5,
                                Point_B < median(Point_B) - 7.5)
编辑

我可能误解了你最初的问题。如果只想筛选
点A
请执行以下操作:

df %>% group_by(ID) %>% filter(Point_A < median(Point_A) - 7.5)
df%>%group\u by(ID)%>%filter(点A
看看
dplyr
这里有一个不错的小插曲。您还可以从base RI中获得use aggregate find
&
来分离必须共同满足的条件。要么在过滤器内部工作,对吗?@Frank Yes都在过滤器内部工作。
的用法在vignette中有很好的文档记录。是的,我在
?filter
中也看到了关于
的用法,但我只是想确定一下,因为这是一个奇怪的语法选择。我也倾向于
mycond%group\u by(ID)%%>%filter(mycond(Point\u A),mycond(Point\u B))
,因为对我来说,重新键入列名很容易出错。史蒂文,我不想为Point\u B设置阈值。我只想为Point\u A设置阈值,并仅基于Point\u A设置子集。当我通过删除Point_B行来使用代码时,它会显示“长度不正确”。如何将其子集?您的意思是当您尝试时:
df%>%group\u by(ID)%>%filter(Point\u A
ID  Point_A  Point_B 
A      10      21
B      60      11
library(dplyr)
df1 %>% group_by(ID) %>% filter(Point_A < median(Point_A) - 7.5,
                                Point_B < median(Point_B) - 7.5)
mycond <- function(x) x < median(x) - 7.5 
df1 %>% group_by(ID) %>% filter(mycond(Point_A), mycond(Point_B))
#Source: local data frame [2 x 3]
#Groups: ID
#
#  ID Point_A Point_B
#1  A      10      21
#2  B      60      11
df %>% group_by(ID) %>% filter(Point_A < median(Point_A) - 7.5)