是否有一种算法允许根据两个排名中这些项目的位置差异对项目进行排名,但也与位置"加权",例如,从位置2-> 1的一个玩家应该排名高于玩家那个从9-> 8开始.
玩具示例,我有两个列表/等级:
等级1:
等级2:
我正在考虑用平均排名(或其他值)来"加权"排名差异,例如,如果玩家从9-> 8开始,则用于排名的值将是(9-8)/ avg(8,9) )= 1/8,5.
我的数据框如下所示:
head(temp$HName)
[1] "UNIVERSITY OF TEXAS HEALTH SCIENCE CENTER AT TYLER"
[2] "METHODIST HOSPITAL,THE"
[3] "TOMBALL REGIONAL MEDICAL CENTER"
[4] "METHODIST SUGAR LAND HOSPITAL"
[5] "GULF COAST MEDICAL CENTER"
[6] "VHS HARLINGEN HOSPITAL COMPANY LLC"
head(temp$Rate)
[1] 7.3 8.3 8.7 8.7 8.8 8.9
76 Levels: 7.3 8.3 8.7 8.8 8.9 9 9.1 9.2 9.3 9.4 9.5 9.6 ... 17.1
> head(temp$Rank)
[1] NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
该temp$Rate排序。我正在尝试编写一个函数assignRank,它为我提供了一个新列temp$Rank,其值为 1、2、3、3、4、5
我的代码如下:
tapply(temp$Rank,temp$Rate, assignRank)
Run Code Online (Sandbox Code Playgroud)
在哪里 …
我有一个整数列表,我想找到列表中的最高值(最大值和最接近值)及其相应的索引值。
我有一个方法,但我觉得太复杂了!
lst = [10,6,17,99,3,1,-3,47, 99]
max_value = (max(lst))
largest = 0.0
largest_index = 0
second_largest = 0.0
second_largest_index = 0
third_largest = 0
third_largest_index = 0
for (index,value) in enumerate (lst):
if value == largest_value:
if largest == 0.0:
largest = value
largest_index = index
elif largest != 0.0 and value > second_largest:
second_largest = value
second_largest_index= index
elif second_largest != 0.0 and value > third_largest:
third_largest = value
third_largest_index = index
elif third_largest != 0.0 and value > …Run Code Online (Sandbox Code Playgroud) 我有一个二维 numpy 数组,我想知道如何创建一个新的二维 numpy 数组来表示基于原始二维数组中所有项目的值的排名。
我想使用以下数组:
anArray = [[ 18.5, 25.9, 7.4, 11.1, 11.1]
[ 33.3, 37. , 14.8, 22.2, 25.9]
[ 29.6, 29.6, 11.1, 14.8, 11.1]
[ 25.9, 25.9, 14.8, 14.8, 11.1]
[ 29.6, 25.9, 14.8, 11.1, 7.4]]
Run Code Online (Sandbox Code Playgroud)
创建一个新的排序数组[基于所有值并且对多个数字具有相同的等级]:
anOrder = [[ 6, 4, 9, 8, 8]
[ 2, 1, 7, 5, 4]
[ 3, 3, 8, 7, 8]
[ 4, 4, 7, 7, 8]
[ 3, 4, 7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
谢谢你。
对于正整数n和k,令“ n的k分区”为加起来为n 的k个不同正整数的排序列表,并令给定的n的k分区的“排名”为其在列表中的位置。所有这些列表按字典顺序排序的列表,从 0 开始。
例如,有两个 5 的 2 分区(n = 5,k = 2):[1,4] 和 [2,3]。由于 [1,4] 按字典顺序位于 [2,3] 之前,因此 [1,4] 的排名为 0,[2,3] 的排名为 1。
所以,我希望能够做两件事:
我可以在不必计算感兴趣的分区之前的n的所有k分区的情况下执行此操作吗?
这个问题与其他问题不同,因为我们在这里讨论整数分区而不仅仅是组合。
下周末我们将参加一场半决赛和决赛的3项资格赛.只有最好的15名参赛者才能参加半决赛.只有最好的6人参加总决赛.
在资格证书中,每个资格证书的分数从0到100
我正在寻找一种方法来选择半决赛的比赛者.这应该基于(资格等级1)*(资格等级2)*(资格等级3)
所以我需要这样的东西:
select id, name, ((.... as RANK_OF_SCORE_1) * (.. as RANK_OF_SCORE_2) * (... as RANK_OF_SCORE_3)) as qualification_score from participants order by qualification_score desc limit 15
Run Code Online (Sandbox Code Playgroud)
但当然这不是有效的mySQL.
除了这个问题,如果竞争者有相同的分数,他们应该都包括在半决赛中,即使这超过15的最大值.
对于决赛,我们希望选择半决赛中最好的6分.如果2分相同,我们想在资格上选择..
以下是以下的示例数据: -
emp doa
1 2014-01-01 00:00:00.000
1 2014-01-05 00:00:00.000
1 2014-01-08 00:00:00.000
1 2014-01-12 00:00:00.000
1 2014-01-15 00:00:00.000
2 2014-01-01 00:00:00.000
2 2014-01-05 00:00:00.000
2 2014-01-10 00:00:00.000
2 2014-01-12 00:00:00.000
2 2014-01-15 00:00:00.000
3 2014-01-01 00:00:00.000
3 2014-01-05 00:00:00.000
4 2014-01-10 00:00:00.000
4 2014-01-12 00:00:00.000
4 2014-01-15 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
doa - 分配项目的日期
要求是选择最接近今天的记录 - 给予过去日期更高的偏好 - 这将表明当前的分配.
预期结果如下─
emp doa
1 2014-01-08 00:00:00.000
2 2014-01-05 00:00:00.000
3 2014-01-05 00:00:00.000
4 2014-01-10 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我有一些限制: -
我的数据有一个ID列,我想将ID重命名为排名.换句话说,我想重命名所有35-> 1,所有39-> 2,所有66-> 3所有77-> 4和所有90-> 5来自以下数据.
我试图使用秩函数但我无法处理两个并列值.我想为id中的两个绑定值给出相同的数字(例如,所有35得到1).
如何将每个ID更改为升序号?
ID
--
35
35
35
35
39
39
39
66
66
66
66
77
77
90
90
90
Run Code Online (Sandbox Code Playgroud) 我需要将rank归因于列表的元素,同时确保绑定元素获得相同的排名.
例如:
data = [[1],[3],[2],[2]]
c = 0
for i in sorted(data, reverse=True):
i.append(c+1)
c += 1
print data
Run Code Online (Sandbox Code Playgroud)
收益:
[[1, 4], [3, 1], [2, 2], [2, 3]]
Run Code Online (Sandbox Code Playgroud)
排名附加到分数的位置.
我需要更改为这个简单的代码,而不是获取:
[[1, 3], [3, 1], [2, 2], [2, 2]]
Run Code Online (Sandbox Code Playgroud)
得分为2的元素被绑定并且两者都获得第二名,而前面第四名的1被提升到第三名?
几个小时后,我被困在类似的东西上,并在一个Teradata查询中输出了一个不那么混乱的代码,用于输出25%,50%,75%的百分位数.可以进一步扩展以产生" 5点总结 ".根据您的人口估计值,最小和最大变化静态值.
有人要求优雅的方法.分享我的.
这是代码:
SELECT MAX(PER_MIN) AS PER_MIN,
MAX(PER_25) AS PER_25,
MAX(PER_50) AS PER_50,
MAX(PER_75) AS PER_75,
MAX(PER_MAX) AS PER_MAX
FROM (SELECT CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.01 AS INT) THEN DURATION_MACRO_CURR END AS PER_MIN,
CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.25 AS INT) THEN DURATION_MACRO_CURR END AS PER_25,
CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.50 AS INT) THEN DURATION_MACRO_CURR END AS PER_50 …Run Code Online (Sandbox Code Playgroud)