R:合并两个数据帧而不乘行

问题描述 投票:-1回答:1

我有两个要合并的数据框:

df1:

Day   name 
1     A   
1     B     
1     C     
2     A   
2     B      
2     C    
3     A      
3     B   

df2:

Day   spending
2     25
2     30
3     20
3     15
3     10

期望的结果:

Day   name   spending
1     A      NA
1     B      NA
1     C      NA
2     A      25   
2     B      30
2     C      NA
3     A      20
3     B      15
3     NA     10 

我已经尝试过merge&join_all,但是我得到的只是:

Day   name   spending
1     A      NA
1     B      NA
1     C      NA
2     A      25 
2     A      30
2     B      25      
2     B      30
2     C      NA
3     A      20
3     A      15
3     A      10
3     B      20
3     B      15
3     B      10
3     NA     20
3     NA     15
3     NA     10

[请注意,尽管某些列中缺少数据(例如df2中的第1天数据和df1中的C名称缺失),但我希望每天都将两个数据框连接起来,而行的长度却根本没有相乘。请指教

r dataframe join merge bind
1个回答
2
投票

没有添加time变量是不可能的。

library(tidyr)
full_join(
  df1 %>% group_by(Day) %>% mutate(time=row_number()),
  df2 %>% group_by(Day) %>% mutate(time=row_number()), 
by=c("Day", "time"))

# A tibble: 9 x 4
# Groups:   Day [3]
    Day name   time spending
  <int> <fct> <int>    <int>
1     1 A         1       NA
2     1 B         2       NA
3     1 C         3       NA
4     2 A         1       25
5     2 B         2       30
6     2 C         3       NA
7     3 A         1       20
8     3 B         2       15
9     3 NA        3       10
© www.soinside.com 2019 - 2024. All rights reserved.