我想从由不同的fators和条件分层的数据帧中删除重复的行,例如最高均值或sd.
一些数据a
是行的因子和id.
set.seed(13654) a<- sort(c(1,1,4,1,2,3,2,3,1,5)) b<- matrix(runif(100,min = 6,max = 14),nrow = 10) c<- data.frame(a,b)
例如,我想减少具有最高平均值的行上的最终数据集.
# calculate means per row gr <- cbind(a,M=rowMeans(c[,-1])) # get rows stratified by a with highest mean: gr1 <- aggregate(M~a,gr,which.max) gr1 a M 1 1 3 2 2 2 3 3 1 4 4 1 5 5 1
因此,因子级别1的第三行,因子级别2的第二行......应该包括在新数据帧中.我想避免循环.我尝试的是split
数据,然后使用lapply
,但到目前为止没有工作.
cl <- split(c,a) # this function does not work it will select not the correct rows. lapply(cl, "[", gr1, )
我的最终目标是这样的功能:
remove.dupl <- function(data,factor,method=c(highest.mean,highest.sd,lowest.sd,...))
你能为我的问题提供一些tipps或解决方案吗?按照我的工作流程,我需要一个"操作方法"来"["
正确使用lapply从数据帧列表中选择不同的行.