Дьянами c мутация dplyr - PullRequest
       0

Дьянами c мутация dplyr

0 голосов
/ 15 февраля 2020

Я хочу динамически вычитать значения, используя mutate, но не знаю, как это сделать. Ниже приведено примерное изображение того, что я хотел бы сделать: enter image description here

Начиная со 2-й строки таблицы, Col C = предыдущий элемент Col C - текущий Элемент Col B, т.е. 5-1 = 4. Аналогично 3-й ряд Col C = 2-й элемент Col C (который мы только что мутировали) - 3-й элемент Col B, т.е. 4-2 = 2. Таким образом, n-й элемент Col C = (n-1) из Col C - nth из Col B. У меня уже есть значения в Col B, но значения Col C динамически изменяются. Таким образом, текущее мутированное значение для Col C зависит от предыдущего мутированного значения. Я использую команду отставания (dplyr), чтобы вычесть значения. Может ли кто-нибудь помочь с этой мутацией Dynami c?

Большое спасибо!

1 Ответ

0 голосов
/ 15 февраля 2020

Мы можем вычесть совокупную сумму из второго значения в ColB и далее из 1-го значения в ColB. Это можно сделать в базе R

df$ColC <- with(df, c(ColB[1], ColB[1] - cumsum(ColB[-1])))
df
#  ColB ColC
#1    5    5
#2    1    4
#3    2    2
#4    3   -1
#5    4   -5

или с использованием dplyr

library(dplyr)
df %>% mutate(ColC = c(first(ColB),first(ColB) - cumsum(ColB[-1])))

data

df <- data.frame(ColB = c(5, 1:4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...