我需要更改/顛倒我數據框中的行,而不是轉置數據,但將底部行移動到頂部,依此類推。如果數據幀是:更改矩陣/數據框中的行順序
1 2 3
4 5 6
7 8 9
我需要轉換爲
7 8 9
4 5 6
1 2 3
我讀過有關sort()
,但我不認爲這是我需要的,或者說我能找到方式。
我需要更改/顛倒我數據框中的行,而不是轉置數據,但將底部行移動到頂部,依此類推。如果數據幀是:更改矩陣/數據框中的行順序
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
。
我將扭轉的索引開始的行數的行中,沿着這條線
revdata <- thedata[dim(thedata)[1L]:1,]
可以使用dplyr
包反轉data.frame的順序:
iris %>% arrange(-row_number())
或者沒有使用管道操作員做
arrange(iris, -row_number())
Veeery遲了,但這似乎是workin摹快,不需要任何額外的軟件包,並很簡單:
for(i in 1:ncol(matrix)) {matrix[,i] = rev(matrix[,i])}
我想這對於經常使用,一會做一個函數出來。 用R v = 3.3.1進行測試。
我們可以扭轉row.names的順序(data.frame只):
# 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
應該是最普遍的回答恕我直言... –
或'光圈[順序(row.names(IRIS) ,下降= T)]' –
@VeerendraGadekar我認爲你的解決方案不太直觀,因爲它有一個「孤立」逗號,指定兩次感興趣的表,並且正在混合圓括號和方括號。我知道這是正確的base-r語法,但它缺乏我的口味中的一些優雅。 –