我有两个数据(工资和投球)。工资(我们发现球员的工资)有26000个条目,而投手(我们发现球员的统计数据)有19000个条目。显然,要获取一些具体统计数据的数据比仅仅获得工资要复杂得多,所以这是可以理解的。
现在,我想在投球数据框架中添加一个薪资列,但只用于匹配的数据(相同的球员,相同的日期)。我想写些代码
如果球员名(来自工资数据帧)=球员姓名(来自投球数据帧)和年份(来自工资数据帧)=年份(来自投球数据帧),则在投球数据帧中插入薪资,否则写入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")
但令人遗憾的是,没有任何东西能正常工作。如果你能帮我解决这个问题,我会很高兴的。
非常感谢
发布于 2017-11-26 15:05:33
只需运行一个保持所有x行(即左联接)的?merge,其中不匹配的y列填充NA:
combine_df <- merge(x=Pitching, y=Salaries, by=c("playerID", "yearID"), all.x=TRUE)而且,由于以后要删除NA薪资行,所以在两个数据(即内部联接)之间运行一个完全匹配的merge,没有显式的all.x可选参数。
在加入中交替使用dplyr
combine_df <- left_join(x=Pitching, y=Salaries, by = c("playerID", "yearID"))上述运行inner_join的原因与id字段之间的完全匹配相同。
https://stackoverflow.com/questions/47488891
复制相似问题