【发布时间】:2018-05-09 09:22:32
【问题描述】:
我有 2 个数据框(薪水和推介)。 Salaries(我们在其中找到球员的薪水)有大约 26,000 个条目,而 Pitching(我们在其中找到球员的统计数据)有大约 19,000 个条目。显然,要获得一些具体的统计数据比仅仅获得工资要复杂得多,所以这是可以理解的。
现在我想在 Pitching 数据框中添加一个薪水列,但只针对匹配的那些(相同的球员,相同的日期)。我想编写类似
的代码如果球员姓名(来自薪水数据框)=球员姓名(来自投球数据框)和年份(来自薪水数据框)=年份(来自投球数据框)则将薪水插入投球数据框,否则写N/A
然后以这种方式,我可以删除带有 N/A 的行,并有一张包含我想要的数据的干净表,可能会少一些观察但完整的。
我尝试了类似的方法:
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")
但遗憾的是,没有任何东西可以正常工作。如果你能帮我解决这个问题,我会很高兴。
非常感谢
【问题讨论】:
-
但遗憾的是,没有任何工作正常 ...这是什么意思?错误?不想要的结果?
-
嘿 Parfais 感谢您的评论。是的,我变成了 2 df 的长度不一样的错误。
标签: r join inner-join dplyr