сортировка столбцов фрейма данных на основе определенного значения в каждом столбце - PullRequest
0 голосов
/ 06 марта 2019

Я использую пакет Tidyverse в R. У меня есть фрейм данных с 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

Я искал переполнение стека, но не смог найти ответ на этот вопрос.

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Если мы хотим использовать dplyr из tidyverse, мы можем использовать slice, чтобы получить последнюю строку, а затем использовать order в decreasing для подстановки столбцов.

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")
1 голос
/ 06 марта 2019

Ниже приведен порядок расположения столбцов фрейма данных в порядке значений последних строк:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...