【问题标题】:Merging data frames in R在 R 中合并数据帧
【发布时间】:2023-03-05 23:02:01
【问题描述】:

假设我有两个数据框。每个都有一个 DAY、一个 MONTH 和一个 YEAR 列以及另一个变量 C 和 P。我想以两种不同的方式合并两个数据框。首先,我按数据合并:

test<-merge(data1,data2,by.x=c("DAY","MONTH","YEAR"),by.y=c("DAY","MONTH","YEAR"),all.x=T,all.y=F)

这非常有效。第二个合并是我遇到问题的那个。因此,我目前已将 data1 中 1996 年 1 月 5 日的值和 data2 中 1996 年 1 月 5 日的值合并到一个数据框中,但现在我想将第三个值合并到新数据框的每一行中。具体来说,我想将 data2 中 1996 年 1 月 4 日的值与 1996 年 1 月 5 日的两个值合并。关于以这种方式灵活地进行合并的任何提示?

样本数据:

data1
C DAY MONTH YEAR
1   1     1 1996
6   5     1 1996
5   8     1 1996
3  11     1 1996
9  13     1 1996
2  14     1 1996
3  15     1 1996
4  17     1 1996    

data2
P DAY MONTH YEAR
1   1     1 1996
4   2     1 1996
8   3     1 1996
2   4     1 1996
5   5     1 1996
2   6     1 1996
7   7     1 1996
4   8     1 1996
6   9     1 1996
1  10     1 1996
7  11     1 1996
3  12     1 1996
2  13     1 1996
2  14     1 1996
5  15     1 1996
9  16     1 1996
1  17     1 1996

【问题讨论】:

  • 很难说没有关于你正在处理的日期的更多细节。可能您可以将它们转换为日期,然后转换为数字,然后将它们四舍五入,如此接近的天数是相同的...或者如果您每个月只有一个日期,则仅合并月份和年份...您能提供一些示例吗数据,以便我们可以看到您正在使用什么?另外,附带说明一下,您不需要指定by.xby.ymerge 将找到匹配的列并将它们合并。

标签: r merge dataframe


【解决方案1】:

创建一个日期类型的新列,而不仅仅是一些日、月、年整数。您可以使用 as.Date() 来执行此操作,尽管您需要在给定字符串的 format= 参数中查找正确的格式。我们称该列为 D1。现在做 data1$D2 = data1$D1 + 1。这里的关键点是 Date 类型允许简单的日期算术。现在只需按 x=D1 和 y=D2 合并即可。

如果这令人困惑,最重要的是您需要将列转换为日期类型,以便您可以进行日期算术。

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多