合并R中的数据帧

时间:2012-01-26 17:14:43

标签: r merge dataframe

假设我有两个数据框。每个都有一个DAY,一个月和一个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)

这完美无缺。第二次合并是我遇到麻烦的。因此,我目前将1996年1月5日的值从data1和1996年1月5日的值从data2合并到一个数据框中,但现在我想将第三个值合并到新数据框的每一行。具体来说,我想将1996年1月4日的数据与数据2合并为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

1 个答案:

答案 0 :(得分:2)

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

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