В моем случае я использовал это:
var query = "select * from table where Id IN @Ids";
var result = conn.Query<MyEntity>(query, new { Ids = ids });
моя переменная «ids» во второй строке является IEnumerable из строк, также они могут быть целыми числами, которые я предполагаю.
Мы можем использовать lag
и fill
из tidyverse
library(tidyverse)
df %>%
mutate(b1 = replace(a, a < lag(a), NA)) %>%
fill(b1)
# a b b1
# <dbl> <dbl> <dbl>
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 3 4 4
#6 2 4 4
#7 5 5 5
#8 6 6 6
#9 9 9 9
. Логика заключается в том, что мы заменяем значения в a
на NA
, где предыдущее значение больше следующего а затем используйте fill
для замены этих NA
на последнее значение, отличное от NA.
Использование cummax()
из базы R
:
df[["b1"]] <- cummax(df[["a"]])
> df
a b b1
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 3 4 4
6 2 4 4
7 5 5 5
8 6 6 6
9 9 9 9
Использование более синтаксиса dplyr
:
df %>%
mutate(b1 = cummax(a))