您好我有两个数据集我想要合并。问题是我需要通过某列和列中的某些值来组合它们。他们都有一个名为player_id的列。一个数据集只有玩家ID。 First data set
第二个数据集包含玩家拥有的本垒打数和玩家ID。问题是第二个数据集有很多我不需要的不相关的玩家。所以我需要仅通过数据集1中的播放器ID合并它们。data set 2
这是我的代码,联合收割机不起作用,因为它带来了两个数据集中的所有玩家ID。
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)
答案 0 :(得分:1)
这是一个简单而常见的问题,请稍微搜索一下。你想要的是一个内部合并,只有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)
这一切都归结为代码的all
部分。文档在?merge()
中非常自我解释,这个问题在这里和其他地方得到了解答。
答案 1 :(得分:0)
您需要使用:
combine<-plyr::join_all(list(player.mt2, batting.hr), by=c("player_id"),type="inner")
答案 2 :(得分:0)
你基本上拥有它,只需更改all参数以保留你感兴趣的那些:
combine <- merge(x=player.mt2, y=batting.hr, by=c("player_id"), all.x=TRUE)
答案 3 :(得分:0)
您需要的是左连接。我会使用dplyr包。
combine <- left_join(player.mt2, battling.hr, by = "player_id")