R 按ID列分组,根据阈值筛选行
我有一个数据帧,我从R 按ID列分组,根据阈值筛选行,r,data.table,plyr,dplyr,R,Data.table,Plyr,Dplyr,我有一个数据帧,我从 ID <- c("A","A","A","B","B","B","C","C","C") Type <- c(45,46,47,45,46,47,45,46,47) Point_A <- c(10,15,20,8,9,10,35,33,39) df <- data.frame(ID,Type,Point_A) ID Type Point_A 1 A 45 10 2 A 46
ID <- c("A","A","A","B","B","B","C","C","C")
Type <- c(45,46,47,45,46,47,45,46,47)
Point_A <- c(10,15,20,8,9,10,35,33,39)
df <- data.frame(ID,Type,Point_A)
ID Type Point_A
1 A 45 10
2 A 46 15
3 A 47 20
4 B 45 8
5 B 46 9
6 B 47 10
7 C 45 35
8 C 46 33
9 C 47 39
虽然我能够计算中间值,但我不知道如何删除行
func <- function(x) (median(x,na.rm=TRUE))
df1 <- df %>%
group_by(ID) %>%
mutate_each(funs(.=func(.)),Point_A)
summarise(Point_A = f(Point_A))
func%
每个点(funs(.=func(.),点A)的变异
总结(点A=f(点A))
请让我知道如何着手做这件事 这些问题已经被问了很多次了。。请在data.table和/或dplyr标记下搜索..正如Arun所提到的,您可以在
子集
或过滤器
中的问题中找到这一点。如果未成功,请尝试df%>%group\u by(ID)%>%filter(中值(Point\u A,na.rm=TRUE)>11)
和数据。table
setDT(df)[如果(中值(点A,na.rm=TRUE)>11.SD,ID]
谢谢@akrun。我也在一个更大的数据集上工作。阿伦,我很抱歉问了一些愚蠢的问题。在询问之前,我会仔细查看标签。
func <- function(x) (median(x,na.rm=TRUE))
df1 <- df %>%
group_by(ID) %>%
mutate_each(funs(.=func(.)),Point_A)
summarise(Point_A = f(Point_A))