我正在为每个国家/地区有2个人的比赛打分,但只有一个国家/地区的顶尖选手获得积分。如果一个国家获得第一名和第二名,则第二名将下降,第三名将上升至第二名。 数据:
library(purrr)
library(dplyr)
map_df(z, as.data.frame) %>%
mutate_all(replace_na, 0)
我尝试使用以下几种方法:ROW_NUMBER()OVER(PARTITION BY
competitorid wristbandid countryname eventid place
14905 8 Australia 100 1
14923 26 New Zealand 100 2
14910 13 Australia 100 3
14922 25 New Zealand 100 4
14926 29 South Africa 100 5
14939 42 Great Britain 100 6
14901 4 United States 100 7
14914 17 Japan 100 8
14903 6 United States 100 9
14940 43 Great Britain 100 10
14933 36 Canada 100 11
14929 32 South Africa 100 12
14917 20 Japan 100 13
14934 37 Canada 100 14
我知道这是错误的,而且我并不仅从每个国家获得顶级运动员。
答案 0 :(得分:2)
我相信您也需要按事件ID进行分区。像这样:
SELECT competitorid
, wristbandid
, countryname
, eventid
, place
, RANK() OVER(PARTITION BY countryname, eventid, order by place DESC) AS RNK
FROM competitormainviewpoints2021isrc