J'ai besoin de changer/d'inverser des lignes dans ma trame de données, de ne pas transposer les données, mais déplacez la rangée inférieure vers le haut et ainsi de suite. Si le cadre de données était:
1 2 3
4 5 6
7 8 9
J'ai besoin de convertir en
7 8 9
4 5 6
1 2 3
J'ai lu environ sort()
mais je ne pense pas que ce soit ce dont j'ai besoin ou que je ne suis pas capable de trouver le chemin.
Vous pouvez inverser l'ordre d'une donnée. En utilisant le package dplyr
:
iris %>% arrange(-row_number())
Ou sans utiliser le tuyau-opérateur en faisant
arrange(iris, -row_number())
Je renverserais les rangées un indice commençant par le nombre de lignes, le long de cette ligne
revdata <- thedata[dim(thedata)[1L]:1,]
Je pense que c'est le moyen le plus simple:
MyMatrix = matrix(1:20, ncol = 2)
MyMatrix[ nrow(MyMatrix):1, ]
Si vous voulez inverser les colonnes, faites juste
MyMatrix[ , ncol(MyMatrix):1 ]
Nous pouvons inverser l'ordre de rangée.Names (pour Data.frame uniquement):
# create data.frame
m <- matrix(1:9, ncol=3, byrow=TRUE)
df_m <- data.frame(m)
#reverse
df_m[rev(rownames(df_m)), ]
# X1 X2 X3
# 3 7 8 9
# 2 4 5 6
# 1 1 2 3
Veeery tard, mais cela semble fonctionner rapidement, n'a pas besoin de packages supplémentaires et est simple:
for(i in 1:ncol(matrix)) {matrix[,i] = rev(matrix[,i])}
Je suppose que pour une utilisation fréquente, on en ferait une fonction. Testé avec R V = 3.3.1.