我有两个数据帧,第一个包含9994行,第二个包含60431行。我想合并两个数据帧,使合并的数据帧包含两个数据帧的组合列,但只包含9994行。
但是,合并后我获得超过9994行。我怎样才能确保不会发生这种情况?
df1 = readRDS('data1.RDS')
nrow(df1)
# [1] 9994
df2 = readRDS('data2.RDS')
nrow(df2)
# [1] 60431
df = merge(df1,df2,by=c("col1","col2"))
nrow(df)
# [1] 10057
df = merge(df1,df2,by=c("col1","col2"),all.x=TRUE)
nrow(df)
# [1] 10057
nrow(na.omit(df))
# [1] 10057
编辑:遵循akrun的评论。 是的,第二个数据框中有重复数据
nrow(unique(df2[,c("col1","col2")]))
# [1] 60263
nrow(df2)
# [1] 60431
如果同一个{col1,col2}组合有多个,如何从数据框中只取一行。当我合并时,我想只有9994行。
答案 0 :(得分:0)
这应该有效,请务必先排序df2
,然后选择正确的行。
df = merge(
df1,
df2[!duplicated(df2[, c("col1","col2")], ],
by=c("col1","col2"),
all.x=TRUE
)