измените порядок столбцов сетки данных или индекс

Опция с использованием базы R ave и data.table::rleid

library(data.table)
df$Consec_days <- with(df, (return > 3) * ave(return, rleid(return > 3), FUN = seq_along))


#     date       return Consec_days
#   <date>      <dbl>       <dbl>
# 1 2019-02-20    1             0
# 2 2019-02-21    2.5           0
# 3 2019-02-22    2             0
# 4 2019-02-23    3             0
# 5 2019-02-24    5             1
# 6 2019-02-25    6.5           2
# 7 2019-02-26    1             0
# 8 2019-02-27    9             1
# 9 2019-02-28    3             0
#10 2019-03-01    2             0

Используя rleid(return > 3), мы создаем группы, а затем используем seq_along и создаем последовательность наблюдений для каждой группы

[111 ]

Мы умножаем его на (return > 3), чтобы сохранить наблюдения, которые больше 3, а все остальные обращаются к 0.


Перевести его на dplyr мы можем сделать

library(dplyr)

df %>%
  group_by(group = rleid(return > 3)) %>%
  mutate(consec_days = (return > 3) * row_number()) %>%
  ungroup() %>%
  select(-group)
5
задан MPelletier 6 May 2012 в 14:26
поделиться

3 ответа

Решено

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

Сейчас это кажется Оооооо очевидным (как и большая часть .net постфактум!) 1213] Datagrid.Columns ("Zone"). DisplayIndex = 0

или

Datagrid.columns (1) .DisplayIndex = 0

11
ответ дан 18 December 2019 в 13:19
поделиться

То, что вы видите, является эффектом того, как VB генерирует анонимные типы в Visual Studio 2008 RTM. Компилятор отсортирует свойства по алфавиту. Следовательно, независимо от того, какой порядок вы указали, при связывании данных с запросом столбцы будут отображаться в алфавитном порядке.

В Visual Studio 2008 SP1 компилятор VB внес изменения для решения этой проблемы. Анонимные типы теперь будут генерировать члены анонимного типа так же, как вы указываете их в коде. Если вы обновитесь до VS2008 SP1, вы должны увидеть изменение в этом поведении.

Подробная статья по теме

2
ответ дан 18 December 2019 в 13:19
поделиться

Я не уверен, что конкретно происходит, но кое-что нужно учитывать ...

В какой момент вы меняете столбцы? Если слишком поздно, возможно, потребуется отскочить от сетки, что приведет к ее перерисовке. Обычно, когда я что-то меняю и не вижу его эффекта на экране, это происходит из-за порядка привязки.

1
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

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