Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to sort data in descending order based on every second value in R?

I am using dplyr for most of my data wrangling in R. Yet, I am having a hard time achieving this particular effect. Can’t also seem to find the answer by googling either.

Assume I have data like this and what I want to achieve is to sort person-grouped data based on cash value from the year 2021. Below I show the outcome I wish to achieve. I am just missing my imagination on this one I guess. If I only had 2021 value I could simply use ... %>% arrange(desc(cash)) but I am not sure how to follow from here.

    year   person        cash
0   2020   personone     29
1   2021   personone     40
2   2020   persontwo     17
3   2021   persontwo     13
4   2020   personthree   62
5   2021   personthree   55      

And what I want to achieve is to sort this data in descending order based on values from the year 2021. So that the data should look like:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

    year   person        cash
0   2020   personthree   62
1   2021   personthree   55
2   2020   personone     29
3   2021   personone     40
4   2020   persontwo     17
5   2021   persontwo     13   

>Solution :

One approach using a join:

df %>%
  filter(year == 2021) %>%
  # group_by(person) %>% slice(2) %>% ungroup() %>%  #each person's yr2
  arrange(-cash) %>%
  select(-cash, -year) %>%
  left_join(df)

Output:

       person year cash
1 personthree 2020   62
2 personthree 2021   55
3   personone 2020   29
4   personone 2021   40
5   persontwo 2020   17
6   persontwo 2021   13
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading