我正在处理一个dataframe,并试图找到第n个最大值的索引(n随循环而变化),但是,在列中,我已经绑定了值,程序抛出了一个错误。下面是一个示例数据集。我基本上是在尝试生成一个类似的数据,但只使用dataframe列向量中所有值的索引值。
对于输出DF,输出DF中的第1列将具有Refer_1元素的索引值,因此Output_DF1,1将具有最高值的索引,而Output_DF10,1将具有最低值的索引。下面是输入的DF。
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个最大值(不一定是列最大值)进行绑定。
which(Consolidated_data_new[,i]==unlist(sort(Consolidated_data_new[,i],partial=j)[j]))
请注意,我希望代码一次只返回一个值,并在下一个循环迭代中处理第二个绑定值。
请帮忙解决这个问题。
致以敬意,
发布于 2015-03-01 15:55:53
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
发布于 2015-03-01 17:02:20
您的评论表明您正在使用一个包含多个列的dataframe,并且您需要一个输出数据more,该输出数据具有将order
的结果应用于每个列的decreasing=TRUE:
> 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")
https://stackoverflow.com/questions/28795344
复制相似问题