第一种情况
我有两个数据框,如下所示:
df1 = read.table(text = 'Date ID
1980-12-01 2
1982-11-01 1
1990-01-01 6
1993-07-01 9', header = TRUE)
df2 = read.table(text = 'Date Var
1980-12-17 8
1982-11-07 9
1990-01-19 10
1993-07-20 22', header = TRUE)
我需要按照“日期”列将df1与df2合并,但只考虑年份和月份,因为否则合并将无法进行(因为日期不同)。
我的输出应该像这样:
Date ID Var
1980-12 2 8
1982-11 1 9
1990-01 6 10
1993-07 9 22
我考虑删除日期列中的天数,但我想知道是否有更快速的方法。我也做了检查,似乎之前没有人问过这个问题。
谢谢。
更新:
第二种情况
如评论所建议的,如果在同一个数据框中有多个观测值在同一年和月份呢?
df1 = read.table(text = 'Date ID #as 1st Case
1980-12-01 2
1982-11-01 1
1990-01-01 6
1993-07-01 9', header = TRUE)
df3 = read.table(text = 'Date Var
1980-12-17 8
1980-12-29 4
1980-12-30 1
1982-11-07 9
1982-11-12 1
1990-01-19 10
1990-01-22 21
1993-07-20 22
1993-07-26 12', header = TRUE)
我的新输出应该是:
Date Var ID
1980-12 8 2
1980-12 4 2
1980-12 1 2
1982-11 9 1
1982-11 1 1
1990-01 10 6
1990-01 21 6
1993-07 22 9
1993-07 12 9
更新
第三种情况
如果我的两个数据框中在相同的年份和月份下有多个观测值怎么办?
df4 = read.table(text = 'Date ID
1980-12-01 1
1980-12-01 2
1982-11-01 3
1982-11-01 4
1990-01-01 5
1990-01-01 6
1993-07-01 7
1993-07-01 8', header = TRUE)
df3 = read.table(text = 'Date Var #as 2nd Case
1980-12-17 8
1980-12-29 4
1980-12-30 1
1982-11-07 9
1982-11-12 1
1990-01-19 10
1990-01-22 21
1993-07-20 22
1993-07-26 12', header = TRUE)
新的输出应该是:
Date Var ID
1980-12-17 8 1
1980-12-17 8 2
1980-12-29 4 1
1980-12-29 4 2
1980-12-30 1 1
1980-12-30 1 2
1982-11-07 9 3
1982-11-07 9 4
1982-11-12 1 3
1982-11-12 1 4
1990-01-19 10 5
1990-01-19 10 6
1990-01-22 21 5
1990-01-22 21 6
1993-07-20 22 7
1993-07-20 22 8
1993-07-26 12 7
1993-07-26 12 8