redimensionar восходи frame

Как он смог бы "redimensionarse" или два вырисовывается dataframes из-за стоимости одной из Ваших колонн? Моя цель состоит в том, чтобы производить с ними, костлявая реализовывать различие стоимости для совпадающих дат.

Не, если бы он мог делаться работоспособным способом, не будучи должен создавать переменные, которые хранили бы два dataframes, и мочь вычислять ошибку.

Данные: два dataframes 2 колонн (время и стоимость) с различными longuitudes, одна начинается позже, чем другая и заканчивает после, что вторая.

df1
         time   value
    1  2001-02-01 107
    2  2001-04-01 122
    3  2001-06-01 123
    4  2001-08-01 101
    5  2001-10-01 130
    6  2001-12-01 116
    7  2002-02-01 108
    8  2002-04-01 154
    9  2002-06-01 146
    10 2002-08-01 111
    11 2002-10-01 110
    12 2002-12-01 133

df2

  time   value

3  2001-06-01 223
4  2001-08-01 131
5  2001-10-01 134
6  2001-12-01 16
7  2002-02-01 228

dfR желанный Результат:

3  2001-06-01 100
4  2001-08-01 30
5  2001-10-01 4
6  2001-12-01 -100
7  2002-02-01 120

Я издаю: # возможное решение состоит в том, чтобы делать merge из-за "time" и потом действовать...

dfR<- merge(df1,df2, by = c("time"))

Какое-то другое лучшее решение?

1
задан 15.06.2017, 21:24
1 ответ

Если я понимаю хорошо, ты хочешь, чтобы он разом получился dfR, как ты это поместил в пример. Самое легкое здесь состоит в том, чтобы использовать dplyr. В этом случае, он мог бы быть:

dfR <- df1 %>% 
  right_join(df2, by="time") %>% 
  transmute(time=time, diferencia=value.y-value.x)

, где dfR он дает желанный результат:

# A tibble: 5 × 2
        time diferencia
      <date>      <int>
1 2001-06-01        100
2 2001-08-01         30
3 2001-10-01          4
4 2001-12-01       -100
5 2002-02-01        120

Смотрит, что здесь мы сделали один right_join(), есть другие способы объединять подмостки (оставляя или удаляя линии) описанные в лист ссылки Укрощать Данные . Там также раз, что ты можешь escojer оставлять предварительные результаты с mutate или игнорировать это с transmute, как мы это сделали здесь наверху.

1
ответ дан 24.11.2019, 13:29