Size: a a a

R (язык программирования)

2021 May 18

PU

Philipp Upravitelev in R (язык программирования)
не станет, функции, как минимум, не чистые
источник

A

Andrey in R (язык программирования)
при апгрейде не забываем сделать
update.packages(checkBuilt = TRUE, ask = FALSE)
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Да это же фантазии.
источник

IS

Ilya Shutov in R (язык программирования)
В такой постановке задачи будет чуть сложнее. Как-то так:

1. Готовим пример данных

dt <- tibble(
 date = c("01.01.2021", "15.01.2021", "06.01.2021", "18.01.2021", "20.01.2021"),
 amount = c(1000, -500, 800, -550, -800)
) %>%
 mutate_at("date", dmy) %>%
 setDT()
# даты должны быть сортированы!



2. Собственно, считаем ===

# инициализируем аккумулятор
accu_dt <- dt[amount < 0, .(accu = cumsum(amount), date)]

# гоняем в цикле возникновения обязательств по аккумулятору,
# детектируем дату переход через 0, фиксируем дату
# data.table можно менять по ссылке, этим и пользуемся!!

ff <- function(x){
 # для сумм, ушедших в погашение ставим NA
 accu_dt[, accu := accu + x][accu > 0, accu := NA]
 # возвращаем дату погашения
 head(na.omit(accu_dt)$date, 1)
}

repay_dt <- dt[amount > 0] %>%
 .[, repayment_date := ff(amount), by = date]

Теперь есть существенные возражения? Это обобщенный пример, сделан только один пользователь, но они все обрабатываются независимо и, возможно, параллельно.
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
Не до конца понимаю, почему в native R для пайпов нельзя было сделать уже привычный %>%
Да и «лямбда» сокращение функций, на мой взгляд, только усложняет читаемость кода.
Какой-то символьный APL они там лепят.
источник

PU

Philipp Upravitelev in R (язык программирования)
я выше приводил тред разраба, который объяснял, в чем разница между пайпами. там разница в том, когда именно применяется пайп, при парсинге или при выполнении.

а анонимная функция мне тоже не нравится
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Кстати в джулии же такой же символ пайпа, нет?))
источник

IS

Ilya Shutov in R (язык программирования)
См второй вариант решения
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
а можете, если не сложно, кинуть ссылку на тред ещё раз. Отмотал до начала апреля сообщения от вас и ссыль не нашёл
источник

PU

Philipp Upravitelev in R (язык программирования)
это было сильно раньше
вот, нашел оригинальный тред в твиттере
https://twitter.com/henrikbengtsson/status/1335328090390597632?s=19
источник

ЮМ

Юта Мата Ссс... in R (язык программирования)
премного благодарен
источник

D

Dmitry Pirshtuk in R (язык программирования)
Замечательно сработало!  Добавил только одно слово list:
dt[order(date), balance := cumsum(amount), by = customer] %>%
 .[, debt_type := date - Sys.Date() < 90] %>%
 .[, tail(.SD, 1), by = list(customer, debt_type)]
источник

D

Dmitry Pirshtuk in R (язык программирования)
спасибо, не ожидал такого развернутого решения!
теперь хочется построить диаграмму изменения структуры долга во времени:
ось Ох - дни/недели/месяцы
ось Оy - суммы долга сроком 0-30, 31-60, 61-90, 90+ дней.
источник

IY

Igor Yegin in R (язык программирования)
Господа, интересует ваше мнение. Не повлияет ли внедрение пайплайнов негативным образом на стандартный формат обращения к датафреймам через
[, ]

? Не уйдёт ли он в прошлое?
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Не уйдёт.
источник

IY

Igor Yegin in R (язык программирования)
Почему? Если не считать legacy кода?
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Я, может туплю под ночь, но как пайпы должны заменить обращение по индексам? Можно пример?
источник

DK

Dm Kb in R (язык программирования)
Читал недавно, что [] - просто функция
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Так и есть, с обязательным аргументом датафреймом
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Операторы основные - тоже функции
источник