R 如何合并列中具有公共值的两个独立数据集
您好,我有两个数据集,我正在尝试合并。问题是我需要将它们按特定列和列中的特定值组合。它们都有一个名为player_id的列。一个数据集只有player id。 第二个数据集有一个球员的本垒打数和球员id。问题是第二个数据集有大量我不需要的无关球员。所以我需要根据数据集1中的播放器ID合并它们 这是我的代码,联合收割机无法工作,因为它从两个数据集中带来了所有玩家IDR 如何合并列中具有公共值的两个独立数据集,r,dataframe,merge,R,Dataframe,Merge,您好,我有两个数据集,我正在尝试合并。问题是我需要将它们按特定列和列中的特定值组合。它们都有一个名为player_id的列。一个数据集只有player id。 第二个数据集有一个球员的本垒打数和球员id。问题是第二个数据集有大量我不需要的无关球员。所以我需要根据数据集1中的播放器ID合并它们 这是我的代码,联合收割机无法工作,因为它从两个数据集中带来了所有玩家ID player2 = subset(player, select = c(player_id, birth_state)) pla
player2 = subset(player, select = c(player_id, birth_state))
player.mt <- player[ which(player$birth_state =='MT'),]
player.mt2 = subset(player.mt, select = c(player_id))
batting.hr <- subset(batting, select = c(player_id, hr))
batting.hr
combine <- merge(player.mt2, batting.hr, by=c("player_id"), all=TRUE)
您需要使用:
combine<-plyr::join_all(list(player.mt2, batting.hr), by=c("player_id"),type="inner")
这是一个简单而常见的问题,请四处搜索一下。您需要的是一个内部合并,其中仅当id列同时位于两者中时才保留数据。一个字符的变化就是区别
combine <- merge(player.mt2, batting.hr, by=c("player_id"), all=F)
或者,如果您想保留玩家数据集中的所有内容,而不管它们是否出现在本垒打中,而不是本垒打数据集中的所有内容,则可以执行以下操作:
combine <- merge(player.mt2, batting.hr, by=c("player_id"), all.x=T, all.y=F)
这一切都归结为代码的所有部分。文档在?merge中是非常自解释的,这个问题在这里和其他地方都得到了回答 您基本上已经拥有了它,只需更改all参数以保留您感兴趣的对象:
combine <- merge(x=player.mt2, y=batting.hr, by=c("player_id"), all.x=TRUE)
你需要的是一个左连接。我会使用dplyr包
combine <- left_join(player.mt2, battling.hr, by = "player_id")