Индексы сортировки по убыванию

Это должно сделать работу.

Во-первых, создайте диагональную матрицу m2, где каждый элемент диагонали представляет собой разницу между 1 и суммой матрицы m1

m1 <- matrix(0.1, nrow = 3, ncol = 3, dimnames = list(c('a','b','c'), c('c1','c2','c3')))

m2 <- diag(1 - colSums(m1))

m2
#>      [,1] [,2] [,3]
#> [1,]  0.7  0.0  0.0
#> [2,]  0.0  0.7  0.0
#> [3,]  0.0  0.0  0.7

Затем нам нужно добавить имена строк до m2. Возможно, мы захотим выделить первые 3 буквы алфавита , а не , используемых для m1. Преимущество этого состоит в том, что вам не нужно указывать имена строк новой матрицы - они будут распределяться на основе того, что еще не использовалось.

rownames(m2) <- letters[!letters %in% rownames(m1)][1:nrow(m2)]

rbind(m1, m2)
#>    c1  c2  c3
#> a 0.1 0.1 0.1
#> b 0.1 0.1 0.1
#> c 0.1 0.1 0.1
#> d 0.7 0.0 0.0
#> e 0.0 0.7 0.0
#> f 0.0 0.0 0.7

Как видите, этот код по-прежнему работает с большим количеством строк / столбцов и различными числами в m1:

m1 <- matrix(0.11, nrow = 3, ncol = 4, dimnames = list(c('a','b','c'), c('c1','c2','c3','c4')))

m1
#>     c1   c2   c3   c4
#> a 0.11 0.11 0.11 0.11
#> b 0.11 0.11 0.11 0.11
#> c 0.11 0.11 0.11 0.11

m2 <- diag(1 - colSums(m1))

m2
#>      [,1] [,2] [,3] [,4]
#> [1,] 0.67 0.00 0.00 0.00
#> [2,] 0.00 0.67 0.00 0.00
#> [3,] 0.00 0.00 0.67 0.00
#> [4,] 0.00 0.00 0.00 0.67

rownames(m2) <- letters[!letters %in% rownames(m1)][1:nrow(m2)]

rbind(m1, m2)
#>     c1   c2   c3   c4
#> a 0.11 0.11 0.11 0.11
#> b 0.11 0.11 0.11 0.11
#> c 0.11 0.11 0.11 0.11
#> d 0.67 0.00 0.00 0.00
#> e 0.00 0.67 0.00 0.00
#> f 0.00 0.00 0.67 0.00
#> g 0.00 0.00 0.00 0.67

Создано в 2019-02-20 с помощью [ 118] представьте пакет (v0.2.1) sup>

7
задан spender 18 May 2009 в 12:50
поделиться

5 ответов

Порядок сортировки индекса имеет значение только для индекса с несколькими столбцами. Для одного столбца Sql Sever может просто использовать индекс в обратном порядке, если он хочет DESC, где индекс - ASC.

Для поиска по нескольким столбцам сортировка индекса имеет значение. Скажем, у вас есть индекс:

field1, field2 desc

Это может быть полезно для этого запроса:

select field1, field2 from table order by field1, field2 desc

И для этого запроса, где индекс может использоваться в обратном порядке:

select field1, field2 from table order by field1 desc, field2

Но для этого запроса Sql Server потребует дополнительных в -сортировка памяти:

select field1, field2 from table order by field1, field2
10
ответ дан 6 December 2019 в 21:19
поделиться

Вот BOL по порядку сортировки индексации:

http://msdn.microsoft.com/en-us/library/ms181154.aspx

Должен помочь вам понять внутреннюю работу немного больше, а также синтаксис.

1
ответ дан 6 December 2019 в 21:19
поделиться

Определение правильного порядка сортировки может потенциально устранить необходимость в шаге сортировки в плане запроса, когда вы определяете порядок с помощью в инструкции select ,

Msdn article

1
ответ дан 6 December 2019 в 21:19
поделиться

Вы сортируете индекс по убыванию, когда разрабатываете этот индекс для запроса, который будет отсортирован по убыванию.

0
ответ дан 6 December 2019 в 21:19
поделиться

Зачастую самые свежие данные смещаются, поэтому, если вы отсортируете "по убыванию даты", вы оптимизируете этот вариант использования.

Я думаю, это будет иметь больше смысла для вещей. которые являются числовыми, а не буквенными.

0
ответ дан 6 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: