我需要更改/倒置我的数据帧的行,而不是转置数据,即将底部行移动到顶部,以此类推。如果数据框如下:
1 2 3
4 5 6
7 8 9
我需要转换为
7 8 9
4 5 6
1 2 3
我已经阅读了 sort()
的相关信息,但我认为它不是我所需要的,或者我找不到方法。
可能还有更优雅的方法,但这个方法是可行的:
m <- matrix(1:9, ncol=3, byrow=TRUE)
# m[rev(seq_len(nrow(m))), ] # Initial answer
m[nrow(m):1, ]
[,1] [,2] [,3]
[1,] 7 8 9
[2,] 4 5 6
[3,] 1 2 3
这个方法有效是因为你在将矩阵索引时使用了一个反转的整数序列作为行索引。nrow(m):1
会得到3 2 1
。
使用 dplyr
包可以反转数据框的顺序:
iris %>% arrange(-row_number())
或者通过以下方式使用不使用管道操作符
arrange(iris, -row_number())
revdata <- thedata[dim(thedata)[1L]:1,]
MyMatrix = matrix(1:20, ncol = 2)
MyMatrix[ nrow(MyMatrix):1, ]
MyMatrix[ , ncol(MyMatrix):1 ]
# 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
for(i in 1:ncol(matrix)) {matrix[,i] = rev(matrix[,i])}
我猜对于频繁使用的情况,人们会将其制作成一个函数。在R v=3.3.1版本中测试通过。
m <- matrix(1:9, ncol=3, byrow=TRUE)
apply(m,2,rev)
iris[order(row.names(iris), decreasing = T),]
- Veerendra Gadekarrow.number
是实际上是字符
。你需要先将其转换为整数
,例如:iris[order(as.integer(row.names(iris)), decreasing = TRUE),]
。 - David Arenburgiris %>% arrange(desc(row_number()))
- James Hirschorn