[英]sorting data frame columns based on specific value in each column
我在R中使用Tidyverse包。我有一個包含20行500列的數據框。 我想根據每列最后一行中值的大小對所有列進行排序。
這是一個只有3行4列的示例:
1 2 3 4,
5 6 7 8,
8 7 9 1
理想的結果是:
3 1 2 4,
7 5 6 8,
9 8 7 1
我搜索了堆棧溢出,但找不到此類問題的答案。
以下內容按最后一行值的順序對數據框列進行重新排序:
df <- data.frame(col1=c(1,5,8),col2=c(2,6,7),col3=c(3,7,9),col4=c(4,8,1))
last_row <- df[nrow(df),]
df <- df[,order(last_row,decreasing = T)]
首先,獲取最后一行。 然后使用order()函數對它們進行排序,並返回重新排序的列。
>df
col3 col1 col2 col4
1 3 1 2 4
2 7 5 6 8
3 9 8 7 1
如果要使用dplyr
的tidyverse
,可以使用slice
來獲取最后一行,然后order
decreasing
使用order來對列進行子集化。
library(dplyr)
df[df %>% slice(n()) %>% order(decreasing = TRUE)]
# V3 V1 V2 V4
#1 3 1 2 4
#2 7 5 6 8
#3 9 8 7 1
R基為誰的翻譯是
df[order(df[nrow(df), ], decreasing = TRUE)]
數據
df <- read.table(text = "1 2 3 4
5 6 7 8
8 7 9 1")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.