我有data.frame,列名以X前缀和一系列数字开头 . 例如,
col<-c("X1.1","X1.2","X1.3","X1.4","X1.5","X2.1","X2.2","X2.3","X2.4","X2.5","X3.1","X3.2","X3.3","X3.4","X3.5")
m<-matrix(sample(1:15),ncol=15,nrow=5)
mf<-data.frame(m)
colnames(mf)<-col
然后我想找到X1前缀(总共四列),X2(四列),X3(四列)中每行的最大值...并返回列号(X前缀后面的后续数字)最大值
所以我的预期输出是
X1 X2 X3 X4
1 4 2 4 ...
...
谁可以帮我这个事?如果有两个最大值,那么也想要返回两个列名...
我搜索了 which
应该被使用..但不确定 .
2 回答
重新创建示例数据(请在将来使用
reproduce
或dput
):获取不同类型的colnames:
获取每个colname类型的最大值:
如果您希望每个colname类型中的列索引最多:
结果是:
要重塑您的数据,请使用以下内容:
此行的删除:unlist(gsub(“\ . \ d $”,“”,as.character(mf.melted $ variable)))
现在,通过熔化的data.frame,您可以轻松地按列组进行搜索和聚合