按列合并具有重复值的小标题

时间:2018-12-22 10:58:12

标签: r

这是一个特殊的“合并小标题”案例。我的可复制示例如下。我有以下小标题:

> tb1
# A tibble: 4 x 2
# Groups:   symbol [2]
  symbol tarima   
  <chr>   <dbl>   
 1 A        59.5
 2 A        61.7
 3 AA       33.1
 4 AA       32.5
 5 AAL      49.6  
 6 AAL      51.6  

> tb2
# A tibble: 6 x 4
# Groups:   symbol [3]
  symbol  open  high   low
  <chr>  <dbl> <dbl> <dbl>
1 A       60.8  61.2  60.8
2 A       60.3  60.5  59.1
3 AA      32.4  33    32.3
4 AA      33.6  34    32.8

我想获得输出:

# A tibble: 4 x 5
# Groups:   symbol [2]
  symbol      open  high   low    tarima
  <chr>       <dbl> <dbl> <dbl>    <dbl>
 1 A           60.8  61.2  60.8    59.5
 2 A           60.3  60.5  59.1    61.7
 3 AA          32.4  33    32.3    33.1
 4 AA          33.6  34    32.8    32.5

我必须保持相同的顺序。

如果有人可以帮助我解决这个问题,我将不胜感激

2 个答案:

答案 0 :(得分:1)

tidyverse的可能性:

bind_cols(df2, df1 %>%
 filter(symbol %in% df2$symbol)) %>%
 select(-symbol1)

  symbol open high  low tarima
1      A 60.8 61.2 60.8   59.5
2      A 60.3 60.5 59.1   61.7
3     AA 32.4 33.0 32.3   33.1
4     AA 33.6 34.0 32.8   32.5

它从df1中的“符号”中筛选出不在df2中的“符号”中的值,并按列绑定两个df。

答案 1 :(得分:1)

也许我来晚了,但我希望它对其他任何人都有用

我认为您可以使用dyplr提供的联接功能来实现所需的功能。

使用right_join可以编写:

new_tb <- right_join(tb1, tb2, by="symbol")

这应该保留tb2的所有行和tb1的所有列,并在变量“ symbol”的值与两者匹配时合并小标题。