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