как добавить вместе кадры данных в списке, но только для совпадающих дат - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть список фреймов данных, которые я хочу объединить в один фрейм данных.Я ищу, чтобы решить две проблемы:

  1. Как сложить столбцы
  2. Как включить только общие даты для всех dfs в списке

Это то, что у меня есть:

library(tidyverse)
library(lubridate)

df1 <- data.frame(
               date = ymd(c("2019-02-01", "2019-02-02", "2019-02-03", "2019-02-04",
                        "2019-02-05")),
                  x = c(1, 2, 3, 4, 5),
                  y = c(2, 3, 4, 5, 6),
                  z = c(3, 4, 5, 6, 7)
       ) 


df2 <- data.frame(
               date = ymd(c("2019-02-01", "2019-02-02", "2019-02-04", "2019-02-05")),
                  x = c(1, 2, 3, 4),
                  y = c(2, 3, 4, 5),
                  z = c(3, 4, 5, 6)
       )

df3 <- data.frame(
               date = ymd(c("2019-02-01", "2019-02-02", "2019-02-03", "2019-02-04")),
                  x = c(1, 2, 3, 4),
                  y = c(2, 3, 4, 5),
                  z = c(3, 4, 5, 6)
       )


dfl <- list(df1, df2, df3)

Это вывод, который я ищу:

data.frame(
        date = ymd(c("2019-02-01", "2019-02-02", "2019-02-04")),
           x = c(3, 6, 11),
           y = c(6, 9, 14),
           z = c(9, 12, 17)
)

Я попытался inner_join и попытался перебрать список, но он получился слишкомсложный, и мне все еще не удалось получить ответ.Есть ли более чистый способ получить окончательный ответ

1 Ответ

0 голосов
/ 27 февраля 2019

Как насчет этого?

bind_rows(dfl) %>%
    group_by(date) %>%
    mutate(n = 1) %>%
    summarise_all(sum) %>%
    filter(n == length(dfl)) %>%
    select(-n)
## A tibble: 3 x 4
#  date           x     y     z
#  <date>     <dbl> <dbl> <dbl>
#1 2019-02-01     3     6     9
#2 2019-02-02     6     9    12
#3 2019-02-04    11    14    17

Предполагается, что в одном data.frame из dfl.

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