我data.frame
在命名列中有一个分数,我需要根据rowMeans
定义colNames
需要分组的索引文件获取某些列簇。我想同时执行此操作,因为当前它是在循环中完成的,该循环传递当前的“群集”以进行处理。见下文。
我有两个数据帧,一个是带有以下内容的索引文件(还有更多,例如,这是obv)
set.seed(42)
index <- data.frame(area=c("area1","area1","area1","area2","area2","area2","area1",
"area1","area4","area5"), name=c(paste0("name",sample(6,10,replace=T))))
另一个是数据文件,这里又是一个贫困的例子
data <- data.frame(name1=sample(10,5),name2=sample(10,5),name3=sample(10,5),
name4=sample(10,5),name5=sample(10,5),name6=sample(10,5))
我做了一个函数,rowMeans
根据“索引” df返回组成区域的“数据” df的列
myfun <- function (curr.target) {
target.cols <- as.character(index$name[index$area==curr.target])
return(rowMeans(data[target.cols],na.rm=T))
}
然后,我使用该函数通过遍历区域来获取区域的行均值。
for (i in seq_along(unique(index$area))){
data[,as.character(unique(index$area))[i]] <- myfun(as.character(unique(index$area))[i])
}
我在跳动自己,想一想如何做到这一点(一旦编写了函数),但是根本无法动弹。有什么建议么?
我们可以split
按“区域”按“索引”中的“名称”列,然后遍历list
,根据“索引”中“名称”列的子集“数据”并获取rowMeans
sapply(split(as.character(index$name), index$area), function(x) rowMeans(data[x]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句