我有类似的东西:
date pgm in.x logs out.y
20130514 na 12 j1 12
20131204 z2 03 j1 03
20130516 a01 04 j0 04
20130628 z1 05 j2 05
Run Code Online (Sandbox Code Playgroud)
我注意到in和out值总是一样的,所以我想删除out.y列.我有这样的其他列我希望能够检测匹配.x列的任何.y列并在合并后删除它们.
Ale*_* A. 10
如果我们假设应删除所有列冗余
no_duplicate <- data_set[!duplicated(as.list(data_set))]
Run Code Online (Sandbox Code Playgroud)
会做的.
as.list将data.frame转换为其所有列的列表,duplicated并将返回那些列的索引,这些列的所有值都是先前看到的列的副本.
这并不直接尝试比较.x和.y列,但具有保留每个重复列的一个副本的效果,我认为这是主要目标.另一方面,它还将删除与另一个.x列重复的任何.x列.
如果我们想要保留所有.x列,即使是那些重复的列,一个好的解决方案可能是在合并之前进行过滤.假设你已经data_x和data_y那个将被"标识符"列合并:
data_y_nonredundant <- data_y[!(as.list(data_y) %in% as.list(data_x) & names(data_y)!="identifier")]
data <- merge(data_x, data_y_nonredundant, by=c("identifier"))
Run Code Online (Sandbox Code Playgroud)