合并 R 中的两个数据帧而不重复输入
Combine two data frames in R without repeated entries
我有两个数据框,其中包含具有相应日期的行条目。数据框 1 包含从 2010 年到 2017 年收集的观察结果。
dates A
2010-01-01 21
2010-01-02 27
2010-01-03 34
...
2017-12-29 22
2017-12-30 32
2017-12-31 25
数据框 2 包含从 2015 年到 2020 年收集的观察结果。
dates A
2015-01-01 20
2015-01-02 29
2015-01-03 34
...
2020-12-29 22
2020-12-30 27
2020-12-31 32
这两个数据框都缺少了几天的观测值。我希望结合两个数据框来填补缺失的数据,并获得到 2020 年的完整时间序列,而无需任何重复条目。像下面的数据框:
dates A
2010-01-01 21
2010-01-02 27
2010-01-03 34
...
2020-12-29 22
2020-12-30 27
2020-12-31 32
使用 merge(df1, df2, by = 'dates')
或 full_join(df1, df2, by = 'dates')
创建重复条目或两列 A.x
和 A.y
,这不是预期的。
如果您的 df
实际上只有两列,您应该能够 bind_rows
、group_by
和 distinct
删除重复项。
library(dplyr)
df <- bind_rows(df1, df2) %>%
group_by(dates, A) %>%
distinct(dates)
编辑:如果您的数据在单个日期的数据帧之间不一致,这将不起作用。如果您有两条 1/1/15 的记录并且它们具有不同的 A
值,那么它们都将被保留。
试试下面的代码
dfout <- unique(rbind(df1,df2))
dfout <- dfout[order(dfout$dates),]
合并 df1
和 df2
,如果在两个数据帧 mean
和 A
值中都存在重复日期,并使用 complete
填写缺失的日期。
library(dplyr)
library(tidyr)
df1 %>%
bind_rows(df2) %>%
mutate(dates = as.Date(dates)) %>%
group_by(dates) %>%
summarise(A = mean(A)) %>%
complete(dates = seq(min(date), max(date), by = 'day'))
我有两个数据框,其中包含具有相应日期的行条目。数据框 1 包含从 2010 年到 2017 年收集的观察结果。
dates A
2010-01-01 21
2010-01-02 27
2010-01-03 34
...
2017-12-29 22
2017-12-30 32
2017-12-31 25
数据框 2 包含从 2015 年到 2020 年收集的观察结果。
dates A
2015-01-01 20
2015-01-02 29
2015-01-03 34
...
2020-12-29 22
2020-12-30 27
2020-12-31 32
这两个数据框都缺少了几天的观测值。我希望结合两个数据框来填补缺失的数据,并获得到 2020 年的完整时间序列,而无需任何重复条目。像下面的数据框:
dates A
2010-01-01 21
2010-01-02 27
2010-01-03 34
...
2020-12-29 22
2020-12-30 27
2020-12-31 32
使用 merge(df1, df2, by = 'dates')
或 full_join(df1, df2, by = 'dates')
创建重复条目或两列 A.x
和 A.y
,这不是预期的。
如果您的 df
实际上只有两列,您应该能够 bind_rows
、group_by
和 distinct
删除重复项。
library(dplyr)
df <- bind_rows(df1, df2) %>%
group_by(dates, A) %>%
distinct(dates)
编辑:如果您的数据在单个日期的数据帧之间不一致,这将不起作用。如果您有两条 1/1/15 的记录并且它们具有不同的 A
值,那么它们都将被保留。
试试下面的代码
dfout <- unique(rbind(df1,df2))
dfout <- dfout[order(dfout$dates),]
合并 df1
和 df2
,如果在两个数据帧 mean
和 A
值中都存在重复日期,并使用 complete
填写缺失的日期。
library(dplyr)
library(tidyr)
df1 %>%
bind_rows(df2) %>%
mutate(dates = as.Date(dates)) %>%
group_by(dates) %>%
summarise(A = mean(A)) %>%
complete(dates = seq(min(date), max(date), by = 'day'))