Как разделить строки в новом столбце на первую/предыдущую строку?

Я хотел бы создать два столбца:

  1. Что значение из следующей строки должно быть разделено на значение в первой строке.
  2. Для того, чтобы значение из следующей строки было разделено на значение из предыдущей строки и выражено в процентах.

Данные

No    Value
1    10
2    15
3    5
4    10
5    40

Результат:

1.

No    Value    V2
1    10    1
2    15    1,5
3    5     0,5
4    10    1
5    40    4

2.

No    Value    V2    V4
1    10    1    100%
2    15    1,5    150%
3    5     0,5    33,33%
4    10    1    200%
5    40    4    400%

person Peter    schedule 08.03.2019    source источник


Ответы (2)


Один из вариантов

library(dplyr)
df1 %>%
  mutate(V2 = Value/first(Value), 
      V4 = 100 * Value/lag(Value, default = first(Value)) )
#No Value  V2        V4
#1  1    10 1.0 100.00000
#2  2    15 1.5 150.00000
#3  3     5 0.5  33.33333
#4  4    10 1.0 200.00000
#5  5    40 4.0 400.00000
person akrun    schedule 08.03.2019

Используя библиотеки dplyr и scales,

data %>%
  mutate(V2 = Value / first(Value),
         V4 = scales::percent(Value / lag(Value)))

# A tibble: 5 x 4
     No Value    V2 V4   
  <dbl> <dbl> <dbl> <chr>
1     1    10   1   NA%  
2     2    15   1.5 150% 
3     3     5   0.5 33%  
4     4    10   1   200% 
5     5    40   4   400% 
person Adam    schedule 08.03.2019