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

changing a row's place in a R dataframe

i am currently trying to move my 28th row in a dataframe of 30 rows to the 13th row of my dataframe. I have tried the following code, after having seen this post, but I do not fully understand it so it doesn’t work. Could anyone help ?

Here is the post I have seen :

Change row order in a matrix/dataframe

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

library(data.table)
 setDT(join_21_20)[join_21_20[,.I[1:(.N+1)] ,by= 
(seq_len(nrow(join_21_20))-15)%/%27+1]$2019] 

Here is a structure of my dataset for reproducibility :

 structure(list(compte = c("Operating income", "Results from assets sale", 
"Total Operating income and Results from assets sale", "Supplies", 
"Staff costs", "Other expenses"), `2021` = c("827208", "75226", 
"902434", "-91590", "-307364", "-372603"), `2020` = c("528398", 
"0", "528398", "-58871", "-282106", "-338288"), `2019` = c(1789537, 
11211, 1800748, -199035, -523918, -579301)), row.names = c(NA, 
6L), class = "data.frame")

>Solution :

You can use indexing as described in the answer to this question.

 df <- structure(list(compte = c("Operating income", "Results from assets sale", 
"Total Operating income and Results from assets sale", "Supplies", 
"Staff costs", "Other expenses"), `2021` = c("827208", "75226", 
"902434", "-91590", "-307364", "-372603"), `2020` = c("528398", 
"0", "528398", "-58871", "-282106", "-338288"), `2019` = c(1789537, 
11211, 1800748, -199035, -523918, -579301)), row.names = c(NA, 
6L), class = "data.frame")

df <- df[c(1:2,4,3,5:nrow(df)),]

df

This prints the dataframe in order 1,2,4,3,5,6.

For your particular case the answer looks as follows:

df <- df[c(1:12,28,13:27,29:nrow(df)),]

In detail, you index the dataframe by selecting df[ROWS, COLUMNS], you provide a vector of the rows that you want, and leaving the column selector empty means you select all the columns as-is. The row vector is a collection of index ranges or singular indexes in the order that you want (one-indexed).

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