根据条件将重复行的值合并为一个(在 R 中)

Combine values from duplicated rows into one based on condition (in R)

我有一个数据集,其中包含丹麦部长的姓名及其从 1990 年到 2020 年的职位(数据来自名为 WhoGovern 的数据集;https://politicscentre.nuffield.ox.ac.uk/whogov-dataset/)。该数据集由部长 name、部长 position、该职位的 prestige 以及部长担任该给定职位的 year 组成。

我的问题是有些部长在同一年被计算两次(即,这些行在 nameyear 方面不是唯一的)。见下图中的例子,其中“Bertel Haarder”在2010年和2021年同时担任卫生部长和内政部长。

我想创建一个数据集,其中所有行都是 nameyear 的唯一组合。但是,我不想从数据集中删除任何信息。相反,我想使用 prestige 列中的信息将重复的行合并为一个。具有最高声望的观察结果应该是主要观察结果,其他信息应该添加到一个新的列中,例如 position2prestige2。在 Bertel Haarder 的示例中,数据应如下所示:

(PS: 抱歉 table 的表现不佳,但不知道如何创建一个漂亮的 table...)


这是用于创建可重现示例的数据集,其中包含 2010-2020 年的观察结果:

    structure(list(year = c(2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 
2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 
2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2011L, 
2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 
2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 
2011L, 2011L, 2011L, 2011L, 2012L, 2012L, 2012L, 2012L, 2012L, 
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 
2012L, 2012L, 2012L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
2013L, 2013L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L), name = c("Lars Loekke Rasmussen", 
"Lykke Friis", "Per Stig Moller", "Gitte Lillelund Bech", "Soren Pind", 
"Birthe Ronn Hornbech", "Brian Mikkelsen", "Tina Nedergaard", 
"Inger Stojberg", "Karen Ellemann", "Claus Hjort Frederiksen", 
"Henrik Hoegh", "Lene Espersen", "Lykke Friis", "Bertel Haarder", 
"Bertel Haarder", "Lars Barfoed", "Karen Ellemann", "Birthe Ronn Hornbech", 
"Charlotte Sahl Madsen", "Benedikte Kiaer", "Troels Lund Poulsen", 
"Hans Christian Schmidt", "Lars Loekke Rasmussen", "Lykke Friis", 
"Per Stig Moller", "Gitte Lillelund Bech", "Soren Pind", "Per Stig Moller", 
"Brian Mikkelsen", "Troels Lund Poulsen", "Inger Stojberg", "Karen Ellemann", 
"Claus Hjort Frederiksen", "Henrik Hoegh", "Lene Espersen", "Lykke Friis", 
"Bertel Haarder", "Bertel Haarder", "Lars Barfoed", "Karen Ellemann", 
"Soren Pind", "Charlotte Sahl Madsen", "Benedikte Kiaer", "Peter Christensen", 
"Hans Christian Schmidt", "Helle Thorning-Schmidt", "Mette Gjerskov", 
"Ole Sohn", "Christine Antorini", "Martin Lidegaard", "Uffe Elbaek", 
"Nick Haekkerup", "Christian Friis Bach", "Manu Sareen", "Margrethe Vestager", 
"Mette Frederiksen", "Ida Auken", "Manu Sareen", "Nicolai Wammen", 
"Bjarne Corydon", "Villy Sovndal", "Astrid Krag", "Margrethe Vestager", 
"Morten Bodskov", "Manu Sareen", "Morten Ostergaard", "Karen Haekkerup", 
"Thor Moger Pedersen", "Carsten Hansen", "Pia Olsen Dyhr", "Henrik Dam Kristensen", 
"Helle Thorning-Schmidt", "Mette Gjerskov", "Annette Vilhelmsen", 
"Christine Antorini", "Martin Lidegaard", "Marianne Jelved", 
"Nick Haekkerup", "Christian Friis Bach", "Manu Sareen", "Margrethe Vestager", 
"Mette Frederiksen", "Ida Auken", "Manu Sareen", "Nicolai Wammen", 
"Bjarne Corydon", "Villy Sovndal", "Astrid Krag", "Margrethe Vestager", 
"Morten Bodskov", "Manu Sareen", "Morten Ostergaard", "Karen Haekkerup", 
"Holger Nielsen", "Carsten Hansen", "Pia Olsen Dyhr", "Henrik Dam Kristensen", 
"Helle Thorning-Schmidt", "Dan Jorgensen", "Henrik Sass Larsen", 
"Manu Sareen", "Rasmus Helveg Petersen", "Marianne Jelved", "Nicolai Wammen", 
"Mogens Jensen", "Marianne Jelved", "Margrethe Vestager", "Christine Antorini", 
"Mette Frederiksen", "Kirsten Brosbol", "Bjarne Corydon", "Martin Lidegaard", 
"Nick Haekkerup", "Margrethe Vestager", "Karen Haekkerup", "Carsten Hansen", 
"Sofie Carsten Nielsen", "Manu Sareen", "Morten Ostergaard", 
"Carsten Hansen", "Mogens Jensen", "Magnus Heunicke", "Helle Thorning-Schmidt", 
"Dan Jorgensen", "Henrik Sass Larsen", "Manu Sareen", "Rasmus Helveg Petersen", 
"Marianne Jelved", "Nicolai Wammen", "Mogens Jensen", "Marianne Jelved", 
"Morten Ostergaard", "Christine Antorini", "Henrik Dam Kristensen", 
"Kirsten Brosbol", "Bjarne Corydon", "Martin Lidegaard", "Nick Haekkerup", 
"Morten Ostergaard", "Mette Frederiksen", "Carsten Hansen", "Sofie Carsten Nielsen", 
"Manu Sareen", "Benny Engelbrecht", "Carsten Hansen", "Mogens Jensen", 
"Magnus Heunicke", "Lars Loekke Rasmussen", "Troels Lund Poulsen", 
"Ellen Trane Norby", "Bertel Haarder", "Peter Christensen", "Jorn Neergaard Larsen", 
"Lars Christian Lilleholt", "Esben Lunde Larsen", "Claus Hjort Frederiksen", 
"Kristian Jensen", "Sophie Lohde", "Ulla Toernaes", "Inger Stojberg", 
"Soren Pind", "Carl Holst", "Karen Ellemann", "Karsten Lauritzen", 
"Hans Christian Schmidt", "Lars Loekke Rasmussen", "Brian Mikkelsen", 
"Mai Mercado", "Mette Bock", "Claus Hjort Frederiksen", "Ulla Toernaes", 
"Simon Emil Ammitzboll", "Merete Riisager", "Thyra Frank", "Troels Lund Poulsen", 
"Lars Christian Lilleholt", "Esben Lunde Larsen", "Karen Ellemann", 
"Kristian Jensen", "Anders Samuelsen", "Ellen Trane Norby", "Soren Pind", 
"Inger Stojberg", "Soren Pape Poulsen", "Sophie Lohde", "Karsten Lauritzen", 
"Ole Birk Olesen", "Lars Loekke Rasmussen", "Brian Mikkelsen", 
"Mai Mercado", "Mette Bock", "Claus Hjort Frederiksen", "Ulla Toernaes", 
"Simon Emil Ammitzboll", "Merete Riisager", "Thyra Frank", "Troels Lund Poulsen", 
"Lars Christian Lilleholt", "Jakob Ellemann-Jensen", "Eva Kjer Hansen", 
"Kristian Jensen", "Anders Samuelsen", "Ellen Trane Norby", "Tommy Ahlers", 
"Inger Stojberg", "Soren Pape Poulsen", "Sophie Lohde", "Karsten Lauritzen", 
"Ole Birk Olesen", "Mette Frederiksen", "Jeppe Kofod", "Nicolai Wammen", 
"Astrid Krag", "Nick Haekkerup", "Simon Kollerup", "Trine Bramsen", 
"Peter Hummelgaard Thomsen", "Mattias Tesfaye", "Pernille Rosenkrantz-Theil", 
"Magnus Heunicke", "Joy Mogensen", "Ane Halsboe-Joergensen", 
"Kaare Dybvad", "Benny Engelbrecht", "Morten Bodskov", "Dan Jorgensen", 
"Rasmus Prehn", "Lea Wermelin", "Mogens Jensen"), position = c("Prime Min.", 
"Min. Of Climate & Energy", "Min. Of Cultural Affairs", "Min. Of Defense", 
"Min. For Development Cooperation", "Min. Of Ecclesiastical Affairs", 
"Min. Of Economic & Business Affairs", "Min. Of Education", "Min. Of Employment", 
"Min. Of Environment", "Min. Of Finance", "Min. Of Food, Agriculture & Fisheries", 
"Min. Of Foreign Affairs", "Min. Of Gender Equality", "Min. Of Health", 
"Min. Of Interior Affairs", "Min. Of Justice", "Min. Of Nordic Cooperation", 
"Min. Of Refugees, Immigration & Integration", "Min. Of Science, Technology & Innovation", 
"Min. Of Social Affairs", "Min. Of Taxation", "Min. Of Transport", 
"Prime Min.", "Min. Of Climate & Energy", "Min. Of Cultural Affairs", 
"Min. Of Defense", "Min. For Development Cooperation", "Min. Of Ecclesiastical Affairs", 
"Min. Of Economic & Business Affairs", "Min. Of Education", "Min. Of Employment", 
"Min. Of Environment", "Min. Of Finance", "Min. Of Food, Agriculture & Fisheries", 
"Min. Of Foreign Affairs", "Min. Of Gender Equality", "Min. Of Health", 
"Min. Of Interior Affairs", "Min. Of Justice", "Min. Of Nordic Cooperation", 
"Min. Of Refugees, Immigration & Integration", "Min. Of Science, Technology & Innovation", 
"Min. Of Social Affairs", "Min. Of Taxation", "Min. Of Transport", 
"Prime Min.", "Min. Of Agriculture, Food & Fisheries", "Min. Of Business Affairs & Growth", 
"Min. Of Children & Education", "Min. Of Climate, Energy & Construction", 
"Min. Of Cultural Affairs", "Min. Of Defense", "Min. For Development Cooperation", 
"Min. Of Ecclesiastical Affairs", "Min. Of Economic Affairs", 
"Min. Of Employment", "Min. Of Environment", "Min. Of Equality", 
"Min. Of European Cooperation", "Min. For Finance", "Min. Of Foreign Affairs", 
"Min. Of Health & Prevention", "Min. Of Interior Affairs", "Min. Of Justice", 
"Min. Of Nordic Cooperation", "Min. Of Research, Innovation & Continuing Education", 
"Min. Of Social Affairs & Integration", "Min. Of Taxation", "Min. Of Towns, Housing & Rural Affairs", 
"Min. Of Trade & Investment", "Min. Of Transport", "Prime Min.", 
"Min. Of Agriculture, Food & Fisheries", "Min. Of Business Affairs & Growth", 
"Min. Of Children & Education", "Min. Of Climate, Energy & Construction", 
"Min. Of Cultural Affairs", "Min. Of Defense", "Min. For Development Cooperation", 
"Min. Of Ecclesiastical Affairs", "Min. Of Economic Affairs", 
"Min. Of Employment", "Min. Of Environment", "Min. Of Equality", 
"Min. Of European Cooperation", "Min. For Finance", "Min. Of Foreign Affairs", 
"Min. Of Health & Prevention", "Min. Of Interior Affairs", "Min. Of Justice", 
"Min. Of Nordic Cooperation", "Min. Of Research, Innovation & Continuing Education", 
"Min. Of Social Affairs & Integration", "Min. Of Taxation", "Min. Of Towns, Housing & Rural Affairs", 
"Min. Of Trade & Investment", "Min. Of Transport", "Prime Min.", 
"Min. Of Agriculture, Food & Fisheries", "Min. Of Business Affairs & Growth", 
"Min. Of Children & Equality", "Min. Of Climate, Energy & Construction", 
"Min. Of Cultural Affairs", "Min. Of Defense", "Min. For Development Cooperation", 
"Min. Of Ecclesiastical Affairs", "Min. Of Economic Affairs", 
"Min. Of Education", "Min. Of Employment", "Min. Of Environment", 
"Min. For Finance", "Min. Of Foreign Affairs", "Min. Of Health & Prevention", 
"Min. Of Interior Affairs", "Min. Of Justice", "Min. Of Nordic Cooperation", 
"Min. Of Research, Innovation & Continuing Education", "Min. Of Social Affairs & Integration", 
"Min. Of Taxation", "Min. Of Towns, Housing & Rural Affairs", 
"Min. Of Trade & Investment", "Min. Of Transport", "Prime Min.", 
"Min. Of Agriculture, Food & Fisheries", "Min. Of Business Affairs & Growth", 
"Min. Of Children & Equality", "Min. Of Climate, Energy & Construction", 
"Min. Of Cultural Affairs", "Min. Of Defense", "Min. For Development Cooperation", 
"Min. Of Ecclesiastical Affairs", "Min. Of Economic Affairs", 
"Min. Of Education", "Min. Of Employment", "Min. Of Environment", 
"Min. For Finance", "Min. Of Foreign Affairs", "Min. Of Health & Prevention", 
"Min. Of Interior Affairs", "Min. Of Justice", "Min. Of Nordic Cooperation", 
"Min. Of Research, Innovation & Continuing Education", "Min. Of Social Affairs & Integration", 
"Min. Of Taxation", "Min. Of Towns, Housing & Rural Affairs", 
"Min. Of Trade & Investment", "Min. Of Transport", "Prime Min.", 
"Min. For Business Affairs & Growth", "Min. For Children, Education & Gender Equality", 
"Min. For Culture & Ecclesiastical Affairs", "Min. Of Defense", 
"Min. For Employment", "Min. For Energy, Utilities & Climate", 
"Min. For Environment & Food", "Min. For Finance", "Min. For Foreign Affairs", 
"Min. For Health", "Min. For Higher Education & Science", "Min. For Immigration, Integration & Housing", 
"Min. For Justice", "Min. For Nordic Cooperation", "Min. For Social Affairs & The Interior", 
"Min. For Taxation", "Min. For Transport & Building", "Prime Min.", 
"Min. For Business Affairs", "Min. For Children & Social Affairs", 
"Min. For Culture & Ecclesiastical Affairs", "Min. Of Defense", 
"Min. For Development Cooperation", "Min. For Economics & The Interior", 
"Min. For Education", "Min. For Elder Affairs", "Min. For Employment", 
"Min. For Energy, Utilities & Climate", "Min. For Environment & Food", 
"Min. For Equality & Nordic Cooperation", "Min. For Finance", 
"Min. For Foreign Affairs", "Min. For Health", "Min. For Higher Education & Science", 
"Min. For Immigration & Integration", "Min. For Justice", "Min. For Public Innovation", 
"Min. For Taxation", "Min. For Transport, Building & Housing", 
"Prime Min.", "Min. For Business Affairs", "Min. For Children & Social Affairs", 
"Min. For Culture & Ecclesiastical Affairs", "Min. Of Defense", 
"Min. For Development Cooperation", "Min. For Economics & The Interior", 
"Min. For Education", "Min. For Elder Affairs", "Min. For Employment", 
"Min. For Energy, Utilities & Climate", "Min. For Environment & Food", 
"Min. For Equality & Fisheries", "Min. For Finance", "Min. For Foreign Affairs", 
"Min. For Health", "Min. For Higher Education & Science", "Min. For Immigration & Integration", 
"Min. For Justice", "Min. For Public Innovation", "Min. For Taxation", 
"Min. For Transport, Building & Housing", "Prime Minister", "Min. For Foreign Affairs", 
"Min. For Finance", "Min. Of Social Affairs & The Interior", 
"Min. For Justice", "Min. For Industry, Business & Financial Affairs", 
"Min. For Defence", "Min. For Employment", "Min. For Immigration & Integration", 
"Min. For Children & Education", "Min. For Health & Elderly Affairs", 
"Min. For Culture & Church", "Min. For Science, Technology, Information & Higher Education", 
"Min. For Building & Housing", "Min. For Transport", "Min. For Taxation", 
"Min. For Climate, Energy & Utilities", "Min. For Development Cooperation", 
"Min. For The Environment", "Min. For Food, Fishery, Equality & Min. For Nordic Cooperation"
), prestige_1 = c(NA, "Medium", "Medium", "High", "Medium", "Medium", 
"Medium", "Medium", "Medium", "Medium", "High", "Medium", "High", 
"Low", "Medium", "High", "Medium", "High", "Low", "Low", "Medium", 
"Medium", "Medium", NA, "Medium", "Medium", "High", "Medium", 
"Medium", "Medium", "Medium", "Medium", "Medium", "High", "Medium", 
"High", "Low", "Medium", "High", "Medium", "High", "Low", "Low", 
"Medium", "Medium", "Medium", NA, "Medium", "Medium", "Medium", 
"Medium", "Medium", "High", "Medium", "Medium", "Medium", "Medium", 
"Medium", "Low", "High", "High", "High", "Medium", "High", "Medium", 
"High", "Medium", NA, "Medium", "Medium", "Medium", "Medium", 
NA, "Medium", "Medium", "Medium", "Medium", "Medium", "High", 
"Medium", "Medium", "Medium", "Medium", "Medium", "Low", "High", 
"High", "High", "Medium", "High", "Medium", "High", "Medium", 
NA, "Medium", "Medium", "Medium", "Medium", NA, "Medium", "Medium", 
"Low", "Medium", "Medium", "High", "Medium", "Medium", "Medium", 
"Medium", "Medium", "Medium", "High", "High", "Medium", "High", 
"Medium", "High", "Medium", NA, "Medium", "Medium", "Medium", 
"Medium", NA, "Medium", "Medium", "Low", "Medium", "Medium", 
"High", "Medium", "Medium", "Medium", "Medium", "Medium", "Medium", 
"High", "High", "Medium", "High", "Medium", "High", "Medium", 
NA, "Medium", "Medium", "Medium", "Medium", NA, "Medium", "Medium", 
"Medium", "High", "Medium", "Medium", "Medium", "High", "High", 
"Medium", "Medium", "Medium", "Medium", "High", "High", "Medium", 
"Medium", NA, "Medium", "Low", "Medium", "High", "Medium", "High", 
"Medium", "Low", "Medium", "Medium", "Medium", "High", "High", 
"High", "Medium", "Medium", "Low", "Medium", "Low", "Medium", 
"Medium", NA, "Medium", "Low", "Medium", "High", "Medium", "High", 
"Medium", "Low", "Medium", "Medium", "Medium", "Medium", "High", 
"High", "Medium", "Medium", "Low", "Medium", "Low", "Medium", 
"Medium", NA, "High", "High", "High", "Medium", "High", "High", 
"Medium", "Low", "Medium", "Medium", "Medium", "Medium", "Medium", 
"Medium", "Medium", "Medium", "Medium", "Medium", "High")), row.names = c(NA, 
-230L), class = c("tbl_df", "tbl", "data.frame"))

两次将数据整形为宽格式,一次用于 position,另一次用于 prestige_1,然后合并两个结果。

library(dplyr)
library(tidyr)

df1 %>%
  group_by(year, name) %>%
  mutate(group = row_number()) %>%
  pivot_wider(
    id_cols = c(year, name),
    names_from = group,
    names_prefix = "position",
    values_from = position
  ) %>%
  inner_join(
    df1 %>%
      group_by(year, name) %>%
      mutate(group = row_number()) %>%
      pivot_wider(
        id_cols = c(year, name),
        names_from = group,
        names_prefix = "prestige",
        values_from = prestige_1
      ),
    by = c("year", "name")
  )

类似于瑞·巴拉达斯:

library(dplyr)
library(tidyr)

data %>%
  rename(prestige=prestige_1) %>%
  arrange(year, name, match(prestige, c("High", "Medium", "Low"))) %>%
  group_by(year, name) %>%
  mutate(n=row_number()) %>%
  pivot_wider(names_from=n, values_from=c(position, prestige)) %>%
  ungroup()

returns

# A tibble: 205 x 8
    year name                  position_1                          position_2                             position_3 prestige_1 prestige_2 prestige_3
   <int> <chr>                 <chr>                               <chr>                                  <chr>      <chr>      <chr>      <chr>     
 1  2010 Benedikte Kiaer       Min. Of Social Affairs              NA                                     NA         Medium     NA         NA        
 2  2010 Bertel Haarder        Min. Of Interior Affairs            Min. Of Health                         NA         High       Medium     NA        
 3  2010 Birthe Ronn Hornbech  Min. Of Ecclesiastical Affairs      Min. Of Refugees, Immigration & Integ~ NA         Medium     Low        NA        
 4  2010 Brian Mikkelsen       Min. Of Economic & Business Affairs NA                                     NA         Medium     NA         NA        
 5  2010 Charlotte Sahl Madsen Min. Of Science, Technology & Inno~ NA                                     NA         Low        NA         NA        
 6  2010 Claus Hjort Frederik~ Min. Of Finance                     NA                                     NA         High       NA         NA        
 7  2010 Gitte Lillelund Bech  Min. Of Defense                     NA                                     NA         High       NA         NA        
 8  2010 Hans Christian Schmi~ Min. Of Transport                   NA                                     NA         Medium     NA         NA        
 9  2010 Henrik Hoegh          Min. Of Food, Agriculture & Fisher~ NA                                     NA         Medium     NA         NA        
10  2010 Inger Stojberg        Min. Of Employment                  NA                                     NA         Medium     NA         NA        
# ... with 195 more rows

data.table

setDT(df)
setnames(df, "prestige_1", "prestige")
dcast(data = df, formula = year + name ~ rowid(year, name), value.var = c("position", "prestige"))[order(year, name)]

这与其他一些选项类似,但您可以将声望作为一个因素(按高、中、低排序),根据它进行排列和编号,然后使用位置和声望作为值重新整形为宽格式.

一个问题是,默认情况下,名称将显示为 position_* 列,然后是 prestige_* 列。通过执行一些字符串提取的额外步骤,您可以根据其中的数字排列列。您也许可以改用 tidyr::pivot_wider_spec 来制定您想要的顺序,但这可能不值得付出努力。

library(dplyr)

df %>%
  rename(prestige = prestige_1) %>%
  mutate(prestige = as.factor(prestige) %>% forcats::fct_relevel("High", "Medium")) %>%
  arrange(prestige) %>%
  group_by(year, name) %>%
  mutate(row = row_number()) %>%
  tidyr::pivot_wider(id_cols = c(year, name), names_from = row, values_from = c(position, prestige)) %>%
  select(year, name, names(.) %>% readr::parse_number() %>% order())

#> # A tibble: 205 x 8
#> # Groups:   year, name [205]
#>     year name  position_1 prestige_1 position_2 prestige_2 position_3 prestige_3
#>    <int> <chr> <chr>      <fct>      <chr>      <fct>      <chr>      <fct>     
#>  1  2010 Gitt… Min. Of D… High       <NA>       <NA>       <NA>       <NA>      
#>  2  2010 Clau… Min. Of F… High       <NA>       <NA>       <NA>       <NA>      
#>  3  2010 Lene… Min. Of F… High       <NA>       <NA>       <NA>       <NA>      
#>  4  2010 Bert… Min. Of I… High       Min. Of H… Medium     <NA>       <NA>      
#>  5  2010 Kare… Min. Of N… High       Min. Of E… Medium     <NA>       <NA>      
#>  6  2011 Gitt… Min. Of D… High       <NA>       <NA>       <NA>       <NA>      
#>  7  2011 Clau… Min. Of F… High       <NA>       <NA>       <NA>       <NA>      
#>  8  2011 Lene… Min. Of F… High       <NA>       <NA>       <NA>       <NA>      
#>  9  2011 Bert… Min. Of I… High       Min. Of H… Medium     <NA>       <NA>      
#> 10  2011 Kare… Min. Of N… High       Min. Of E… Medium     <NA>       <NA>      
#> # … with 195 more rows