我想合并R中的两个数据集。
> dt_1
co_code co_stkdate bse_closing_price bse_returns
1 21042 1990-01-01 47.50 1.0440
2 21042 1990-01-02 48.75 1.0263
3 21042 1990-01-03 42.50 0.8718
4 22765 1990-01-01 37.00 1.0000
5 22765 1990-01-02 37.00 1.0000
6 22765 1990-01-03 37.00 1.0000
> dt_2
co_code co_stkdate bse_market_cap bse_pe
1 21042 1990-01-01 338.8650 10.7236
2 21042 1990-01-02 347.7825 11.0058
3 21042 1990-01-03 303.1950 9.5948
4 21042 1990-01-04 303.1950 9.5948
5 22765 1990-01-01 206.7147 6.2263
6 22765 1990-01-02 206.7147 6.2263
7 22765 1990-01-03 206.7147 6.2263
8 22765 1990-01-09 202.5246 6.1001
最终所需的输出是:
> dt_3
co_code co_stkdate bse_closing_price bse_returns bse_market_cap bse_pe
1 21042 1990-01-01 47.50 1.0440 338.8650 10.7236
2 21042 1990-01-02 48.75 1.0263 347.7825 11.0058
3 21042 1990-01-03 42.50 0.8718 303.1950 9.5948
4 21042 1990-01-04 NA NA 303.1950 9.5948
5 22765 1990-01-01 37.00 1.0000 206.7147 6.2263
6 22765 1990-01-02 37.00 1.0000 206.7147 6.2263
7 22765 1990-01-03 37.00 1.0000 206.7147 6.2263
8 22765 1990-01-09 NA NA 202.5246 6.1001
我尝试合并,但它给了我很多行(24),这是不可取的。
> merge(x = dt_1, y = dt_2, by = "co_code")
co_code co_stkdate.x bse_closing_price bse_returns co_stkdate.y bse_market_cap bse_pe
1 21042 1990-01-01 47.50 1.0440 1990-01-01 338.8650 10.7236
2 21042 1990-01-01 47.50 1.0440 1990-01-02 347.7825 11.0058
3 21042 1990-01-01 47.50 1.0440 1990-01-03 303.1950 9.5948
4 21042 1990-01-01 47.50 1.0440 1990-01-04 303.1950 9.5948
5 21042 1990-01-02 48.75 1.0263 1990-01-01 338.8650 10.7236
6 21042 1990-01-02 48.75 1.0263 1990-01-02 347.7825 11.0058
7 21042 1990-01-02 48.75 1.0263 1990-01-03 303.1950 9.5948
8 21042 1990-01-02 48.75 1.0263 1990-01-04 303.1950 9.5948
9 21042 1990-01-03 42.50 0.8718 1990-01-01 338.8650 10.7236
10 21042 1990-01-03 42.50 0.8718 1990-01-02 347.7825 11.0058
11 21042 1990-01-03 42.50 0.8718 1990-01-03 303.1950 9.5948
12 21042 1990-01-03 42.50 0.8718 1990-01-04 303.1950 9.5948
13 22765 1990-01-01 37.00 1.0000 1990-01-01 206.7147 6.2263
14 22765 1990-01-01 37.00 1.0000 1990-01-02 206.7147 6.2263
15 22765 1990-01-01 37.00 1.0000 1990-01-03 206.7147 6.2263
16 22765 1990-01-01 37.00 1.0000 1990-01-09 202.5246 6.1001
17 22765 1990-01-02 37.00 1.0000 1990-01-01 206.7147 6.2263
18 22765 1990-01-02 37.00 1.0000 1990-01-02 206.7147 6.2263
19 22765 1990-01-02 37.00 1.0000 1990-01-03 206.7147 6.2263
20 22765 1990-01-02 37.00 1.0000 1990-01-09 202.5246 6.1001
21 22765 1990-01-03 37.00 1.0000 1990-01-01 206.7147 6.2263
22 22765 1990-01-03 37.00 1.0000 1990-01-02 206.7147 6.2263
23 22765 1990-01-03 37.00 1.0000 1990-01-03 206.7147 6.2263
24 22765 1990-01-03 37.00 1.0000 1990-01-09 202.5246 6.1001
我是R和合并的新手。我尝试在左连接,外连接等上读取一些堆栈溢出帖子但是所有这些都给了我相同的24行。 How to join (merge) data frames (inner, outer, left, right)?
答案 0 :(得分:0)
您可以尝试dplyr
库合并两个数据框。
根据您是想要所有行,只是dt_1
中的行和dt_2
中匹配dt_1
的行,还是两个帧中都存在的行,您可能会使用 - 分别为full_join
,left_join
/ right_join
或inner_join
。
dt_3 <- full_join(dt_1, dt_2)
由于共同的列具有相同的名称,因此您无需指定by
条件。
您也可以检查语法here。