R: utworzyć nową kolumnę na podstawie wielu warunków dwie kolumny z datami

głosy
1

Mam ramki danych, które wygląda następująco (krótki przykład):

df

date1        date2        Value
01-01-2016   01-01-2016   100
01-02-2016   01-01-2016   90
01-03-2016   01-01-2016   110
01-02-2016   01-02-2016   180
01-03-2016   01-02-2016   80
01-04-2016   01-02-2016   100
01-05-2016   01-02-2016   70
01-03-2016   01-03-2016   90
01-04-2016   01-03-2016   100
01-05-2016   01-03-2016   80

Chcę utworzyć nową kolumnę w oparciu o następujące kryteria: jeśli date1 = date2 muszę umieścić w nowej kolumnie „Value_new” wartość z kolumny „wartość” z rzędu, w którym date1 = date2 - jeden miesiąc. W przypadku, gdy nie jest obecnie wart date1 = date2 - jeden miesiąc, nowa wartość powinna być równa 0.

Wyjście powinno być tak:

date1        date2        Value  Value_new
01-01-2016   01-01-2016   100    0
01-02-2016   01-01-2016   90     0
01-03-2016   01-01-2016   110    0
01-02-2016   01-02-2016   180    90
01-03-2016   01-02-2016   80     0
01-04-2016   01-02-2016   100    0
01-05-2016   01-02-2016   70     0
01-03-2016   01-03-2016   90     80
01-04-2016   01-03-2016   100    0
01-05-2016   01-03-2016   80     0

Starałem się rozwiązać ten problem za pomocą następnego kodu, ale to nie działa prawidłowo:

df$Value_new <- 0
df$Value_new[df$date1==df$date2] <- df$Value[(df$date1 == (df$date2 - months(1))]

Jestem nowy w programowaniu R i byłby wdzięczny za wszelkie sugestie.

Zablokować cytat

Utwórz 19/03/2020 o 21:54
źródło użytkownik
W innych językach...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more