首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中寻找n个最大值指标的处理

在R中寻找n个最大值指标的处理
EN

Stack Overflow用户
提问于 2015-03-01 15:29:12
回答 2查看 395关注 0票数 1

我正在处理一个dataframe,并试图找到第n个最大值的索引(n随循环而变化),但是,在列中,我已经绑定了值,程序抛出了一个错误。下面是一个示例数据集。我基本上是在尝试生成一个类似的数据,但只使用dataframe列向量中所有值的索引值。

对于输出DF,输出DF中的第1列将具有Refer_1元素的索引值,因此Output_DF1,1将具有最高值的索引,而Output_DF10,1将具有最低值的索引。下面是输入的DF。

代码语言:javascript
运行
复制
    Input       
1   17         
2   21          
3   13         
4   26          
5   204         
6   36         
7   14          
8   25          
9   45          
10  37          

Output (index values)
5
9
10
6
4
8
2
1
7
3

我目前正在使用其中,取消列表和部分,以获得索引,但是,我无法纠正错误。请注意,可以使用任意n个最大值(不一定是列最大值)进行绑定。

代码语言:javascript
运行
复制
which(Consolidated_data_new[,i]==unlist(sort(Consolidated_data_new[,i],partial=j)[j]))

请注意,我希望代码一次只返回一个值,并在下一个循环迭代中处理第二个绑定值。

请帮忙解决这个问题。

致以敬意,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-01 15:55:53

代码语言:javascript
运行
复制
library(data.table)

 DT<-structure(list(Refer_1 = c(11L, 15L, 7L, 19L, 104L, 24L, 11L, 
22L, 39L, 19L), Refer_2 = c(17L, 21L, 13L, 25L, 204L, 36L, 14L, 
25L, 45L, 37L)), .Names = c("Refer_1", "Refer_2"), row.names = c(NA, 
-10L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x0000000000130788>) 

DT[,lapply(.SD, order,decreasing=TRUE)]
    Refer_1 Refer_2
 1:       5       5
 2:       9       9
 3:       6      10
 4:       8       6
 5:       4       4
 6:      10       8
 7:       2       2
 8:       1       1
 9:       7       7
10:       3       3
票数 2
EN

Stack Overflow用户

发布于 2015-03-01 17:02:20

您的评论表明您正在使用一个包含多个列的dataframe,并且您需要一个输出数据more,该输出数据具有将order的结果应用于每个列的decreasing=TRUE:

代码语言:javascript
运行
复制
> DF[2] <- sample(1:300, 10)
> DF[3] <- sample(1:300, 10)
> DF
   Input  V2 V3
1     17 210  3
2     21  72  4
3     13 263  1
4     26 249  6
5    204 223 10
6     36  83  7
7     14 107  2
8     25 295  5
9     45 198  9
10    37 112  8

> ordDF <- as.data.frame(lapply(DF, order, decreasing=TRUE))
> names(ordDF) <- paste0("res", 1:length(DF) )

> ordDF
   res1 res2 res3
1     5    8    4
2     9    3    9
3    10    4    2
4     6    5    7
5     4    1   10
6     8    9    8
7     2   10    1
8     1    7    6
9     7    6    3
10    3    2    5

> dput(ordDF)
structure(list(res1 = c(5L, 9L, 10L, 6L, 4L, 8L, 2L, 1L, 7L, 
3L), res2 = c(8L, 3L, 4L, 5L, 1L, 9L, 10L, 7L, 6L, 2L), res3 = c(4L, 
9L, 2L, 7L, 10L, 8L, 1L, 6L, 3L, 5L)), .Names = c("res1", "res2", 
"res3"), row.names = c(NA, -10L), class = "data.frame")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28795344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档