合并2不等同数据框由多个条件

合并2不等同数据框由多个条件

问题描述:

我有2个数据框(工资和投球)。薪水(我们发现球员的薪水)有26'000个参赛项目,Pitching(我们发现球员的统计数据)有19'000项。显然,赚取某些具体统计数据而不仅仅是薪水是相当复杂的,所以这是可理解的。合并2不等同数据框由多个条件

现在我想添加一个薪金列到Pitching数据框中,但只是匹配的(相同的球员,相同的日期)。我想代码如

如果球员姓名(来自工资数据框)=球员姓名(来自投球数据框)和年份(来自薪水数据框)=年(从投球数据框),然后在投球数据框中插入薪水,否则写N/A

然后以这种方式,我可以删除与N/A的行,并与我想要的数据cleen工作表,可能少一点意见,但一个完整的。

我想是这样的:

full_join(Salaries,Pitching, by="salary") %>% 
 
    mutate(condition = (Salaries$playerID == Pitching$playerID & Salaries$yearID = Pitching$yearID)) 
 
    
 

 
CombineDf <- merge(y=Salaries, y=Pitching, by=Pitching$playerID) 
 

 
joined = cbind(Salaries[match(names(Pitching), Salaries$playerID),], Pitching) 
 

 
Pitching$Salary <- ifelse(Salaries$playerID >= Pitching$playerID & Salaries$yearID >= Pitching$yearID, Salaries$salary, "N/A")

但遗憾的是没有做正常工作。如果你能帮我解决这个问题,我会很高兴。

非常感谢

+0

*但遗憾的是没有任何工作正常* ...这是什么意思?错误?不想要的结果? – Parfait

+0

嘿帕尔法斯感谢您的评论。是的,我成为2 df的长度不一样的错误。 –

只需运行一个?merge保持所有x行(即左连接),其中无与伦比的Y列充满NA:

combine_df <- merge(x=Pitching, y=Salaries, by=c("playerID", "yearID"), all.x=TRUE) 

而且因为你会去除NA工资行之后,运行merge,两个数据帧(即内连接)之间完全匹配,没有明确的all.x可选参数。或者与


left_joindplyr

combine_df <- left_join(x=Pitching, y=Salaries, by = c("playerID", "yearID")) 

与上述相同的理由,通过ID字段两组之间的完全匹配运行inner_join

+0

非常感谢您的帮助Parfait! C'est Parfait –