合并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")
但遗憾的是没有做正常工作。如果你能帮我解决这个问题,我会很高兴。
非常感谢
答
只需运行一个?merge
保持所有x行(即左连接),其中无与伦比的Y列充满NA:
combine_df <- merge(x=Pitching, y=Salaries, by=c("playerID", "yearID"), all.x=TRUE)
而且因为你会去除NA
工资行之后,运行merge
,两个数据帧(即内连接)之间完全匹配,没有明确的all.x
可选参数。或者与
left_join在dplyr
:
combine_df <- left_join(x=Pitching, y=Salaries, by = c("playerID", "yearID"))
与上述相同的理由,通过ID字段两组之间的完全匹配运行inner_join
。
+0
非常感谢您的帮助Parfait! C'est Parfait –
*但遗憾的是没有任何工作正常* ...这是什么意思?错误?不想要的结果? – Parfait
嘿帕尔法斯感谢您的评论。是的,我成为2 df的长度不一样的错误。 –