尝试在dplyr中合并两个 Dataframe 时出错

wqsoz72f  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(115)

我有以下两个 Dataframe 。我尝试使用left_join x x Key合并这两个 Dataframe ,但是出现错误
第一个
这个问题有什么解决办法吗?

ryevplcw

ryevplcw1#

使用基数merge。因为dfdf2共享Key,所以不需要指定它。all=TRUE意味着,我们需要df的所有行和df2的所有行。

res <- merge(df, df2, all=TRUE)

head(res)
#    Key Quartile    min   max
# 1 GC23        1    0.8  70.1
# 2 GC23        2   70.2 102.8
# 3 GC23        3  102.9 124.3
# 4 GC23        4  124.4 342.6
# 5 GC23    Today  131.8 131.8
# 6 GC24        1 -108.1  -0.2
tkqqtvp1

tkqqtvp12#

它应该用引号括起来,例如a charactervector

library(dplyr)
left_join(df,df2, by = "Key")
  • 输出
# A tibble: 44 × 7
   Key   Quartile.x    min.x   max.x Quartile.y min.y max.y
   <fct> <fct>         <dbl>   <dbl> <fct>      <dbl> <dbl>
 1 GC23  1             0.800  70.1   Today      132.  132. 
 2 GC23  2            70.2   103.    Today      132.  132. 
 3 GC23  3           103.    124.    Today      132.  132. 
 4 GC23  4           124.    343.    Today      132.  132. 
 5 GC24  1          -108.     -0.200 Today      -47.2 -47.2
 6 GC24  2            -0.200  63.1   Today      -47.2 -47.2
 7 GC24  3            63.2   124.    Today      -47.2 -47.2
 8 GC24  4           124.    190.    Today      -47.2 -47.2
 9 GC25  1           -71.0     4.80  Today      -12.2 -12.2
10 GC25  2             5.30   67.1   Today      -12.2 -12.2
# … with 34 more rows

更新

如果要添加新行,请使用bind_rows

> bind_rows(df, df2)
# A tibble: 55 × 4
   Key   Quartile      min     max
   <fct> <fct>       <dbl>   <dbl>
 1 GC23  1           0.800  70.1  
 2 GC23  2          70.2   103.   
 3 GC23  3         103.    124.   
 4 GC23  4         124.    343.   
 5 GC24  1        -108.     -0.200
 6 GC24  2          -0.200  63.1  
 7 GC24  3          63.2   124.   
 8 GC24  4         124.    190.   
 9 GC25  1         -71.0     4.80 
10 GC25  2           5.30   67.1  
# … with 45 more rows

根据?left_join
by -要作为连接依据的变量的字符向量或使用创建的连接规范
如果我们需要根据新数据集更新min/max

rows_update(df, df2[-2], by = "Key")
# A tibble: 44 × 4
   Key   Quartile   min   max
   <fct> <fct>    <dbl> <dbl>
 1 GC23  1        132.  132. 
 2 GC23  2        132.  132. 
 3 GC23  3        132.  132. 
 4 GC23  4        132.  132. 
 5 GC24  1        -47.2 -47.2
 6 GC24  2        -47.2 -47.2
 7 GC24  3        -47.2 -47.2
 8 GC24  4        -47.2 -47.2
 9 GC25  1        -12.2 -12.2
10 GC25  2        -12.2 -12.2
# … with 34 more rows

相关问题