我有一个大数据框,我需要从每列中选择3个顶部值(顺序很重要)并保存相应的行号。如何从每列中选取n个最高值并保存相应的行?
names<- c("t1","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9")
values1 <- c(2,3.1,4.5,5.1,6.5,7.1,8.5,9.11,10.1,11.8,12.3)
values2 <- c(1,3.1,3,5.1,6.5,7.1,8.5,9.11,10.1,12,12)
mydf<- data.frame(names,values1,values2)
#@Juan Bosco has suggested the followings which is great but gets confuses in this case where I have similar values...
idx <- lapply(2:3, function(col_index) {
max_values <- sort(mydf[[col_index]], decreasing = T)[1:3]
sapply(max_values, function(one_value){
as.numeric(rownames(mydf[mydf[[col_index]] == one_value, ]))
})
})
任何想法如何解决这个问题?
感谢
如何为名称列定义“最高值”?其余的,因为它们是数字的,你可以使用'max'。 –
只要能跟踪行号,我就可以删除该列。但'最大'给出一个单一的值,对吧?我想要顶级的。 @Juan Bosco – Jack