Нахождение ежедневной доходности в R для нескольких столбцов и строк

У меня есть этот фрейм данных с именем finaldf, который выглядит примерно так: в общей сложности 70 различных цен на криптовалюту и данные за 2-3 года

Date        P1          P2      P3     P4...........P70      
28-Apr-13   135.3       135.98  132.1  134.2
29-Apr-13   134.44      147.49  134    144.54  
30-Apr-13   144         146.93  134.05 139    
1-May-13    139         139.89  107.72 116.99 

Я хочу применить формулу ко всем от P1 до P70 для ежедневного возврата. Например, формула, которую я хочу применить на основе данных примера, будет выглядеть как (134.44-135.3)/135.3, но она будет охватывать все данные от P1 до P70 для всех дат. Окончательный результат, который я ищу, будет примерно таким

DR = ежедневный доход

Date  P1  DR1  P2  DR2.......P70  DR70

1 ответ

Решение

Мы можем использовать mutate_at от dplyr указать столбцы, которые начинаются с 'P' и разделить последующие значения на текущие значения, чтобы создать столбцы 'DR'

library(dplyr)
df1 %>%
   mutate_at(vars(starts_with('P')), funs(DR = (lead(.)- .)/.))
Другие вопросы по тегам