Арифметика между двумя столбцами, отставшими на один ряд в dplyr - PullRequest
0 голосов
/ 10 марта 2019

Не был уверен, что это лучший способ выразить это, но я хотел бы умножить / разделить два столбца друг на друга, отставая на одну строку (в моем наборе данных это означает, что varx / var - 1 строка).

Конечным результатом должен быть дополнительный столбец с одним значением NA (для первого года, который отсутствует)

У меня проблемы с индексацией, но я думаю, что что-то будет в этом духе ...

например.

df <- data_frame(year = c(2010:2020), var_x = c(20:30), var_y = c(2:12))


#not correct
diff <- df[,2, 2:ncol(df)-1] * df[,3, 1:ncol(df)]
dplyr would look something like...

df %>% 
  mutate(forecast = (var_x * ncol(var_y)-1))

incorrect result:
# A tibble: 11 x 4
    year var_x var_y forecast
   <int> <int> <int>    <int>
 1  2010    20     2       40
 2  2011    21     3       63
 3  2012    22     4       88
 4  2013    23     5      115
 5  2014    24     6      144
 6  2015    25     7      175
 7  2016    26     8      208
 8  2017    27     9      243
 9  2018    28    10      280
10  2019    29    11      319
11  2020    30    12      360


Error in mutate_impl(.data, dots) : 
  Column `forecast` must be length 11 (the number of rows) or one, not 0

Спасибо, ваше руководство ценится.

1 Ответ

0 голосов
/ 10 марта 2019

Из рекомендуемого комментария выше:

df %>% 
mutate(forecast = var_y * lag(var_x))

# A tibble: 11 x 4
    year var_x var_y forecast
   <int> <int> <int>    <int>
 1  2010    20     2       NA
 2  2011    21     3       60
 3  2012    22     4       84
 4  2013    23     5      110
 5  2014    24     6      138
 6  2015    25     7      168
 7  2016    26     8      200
 8  2017    27     9      234
 9  2018    28    10      270
10  2019    29    11      308
11  2020    30    12      348

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...