Как создать новый столбец, в котором значения берутся из числа минус столбец? - PullRequest
1 голос
/ 04 апреля 2020

Моя цель состоит в том, чтобы создать новый столбец "Yi1", который в первом ряду равен 52, затем в строке 2 последует 52 минус "di1" из строки 1, затем в строке 2 будет значение "Yi1" минус значение "di1". "в строке 2 будет в строке 3 и т. д.

Результат должен выглядеть следующим образом:

    time di1 Yi1
1     1   1   52   
2     3   2   51
3     4   1   49
4     5   0   48
5     8   0   48
6    10   1   48
7    12   0   47

Спасибо!

1 Ответ

1 голос
/ 04 апреля 2020

Мы можем сделать

df1$Yi1 <- c(52, head(52 - cumsum(df1$di1), -1))
df1$Yi1  
#[1] 52 51 49 48 48 48 47

Или немного короче

with(df1, c(52, 52 - cumsum(di1[-length(di1)])))
#[1] 52 51 49 48 48 48 47

Или wth dplyr

library(dplyr)
df1 %>%
   mutate(Yi1  = lag(52 - cumsum(di1), default = 52) )
#  time di1 Yi1
#1    1   1  52
#2    3   2  51
#3    4   1  49
#4    5   0  48
#5    8   0  48
#6   10   1  48
#7   12   0  47

данные

df1 <- structure(list(time = c(1L, 3L, 4L, 5L, 8L, 10L, 12L), di1 = c(1L, 
2L, 1L, 0L, 0L, 1L, 0L)), row.names = c("1", "2", "3", "4", "5", 
"6", "7"), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...