Операция строки в R для заполнения столбца на основе предыдущей строки и других переменных?

У меня есть такой фрейм данных:

Индекс А Б Д 1 2 1 1 2 2 1 нет данных 3 2 1 нет данных 4 2 1 нет данных

Я хочу заменить NA в «Y» на основе функции A, B и предыдущего значения Y, такого что Y = Prior Y + A - B

Поэтому окончательный результат должен быть:

Индекс А Б Д 1 2 1 1 2 2 1 2 3 2 1 3 4 2 1 4

Это кажется простой проблемой, но между всеми различными функциями (применить, уменьшить, накопить, отложить и т. д.) я не уверен, что это лучший подход. Надеюсь на решение с dplyr. Спасибо!

Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
2
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать cumsum() для комбинированного вектора c(Y[1], (A - B)[-1]):

library(dplyr)

dat %>%
  mutate(Y = cumsum(c(Y[1], (A - B)[-1])))

# A tibble: 4 × 4
  Index     A     B     Y
  <dbl> <dbl> <dbl> <dbl>
1     1     2     1     1
2     2     2     1     2
3     3     2     1     3
4     4     2     1     4

Подтверждение того, что это работает - после того, как я разместил этот вопрос, я связался с другом, и он также предложил мне попробовать cumsum, но ваш код намного элегантнее, чем то, что я реализовал. В моей реальной проблеме «Y [1]» на самом деле является последней строкой (последней определенной как максимальная дата) для группы, но я могу посмотреть это значение отдельно.

Cero 11.01.2023 18:05

Другие вопросы по теме