我有类似的东西:
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
我注意到 in 和 out 值始终相同,因此我想删除 out.y 列。我还有其他类似的列,我希望能够检测到与 .x 列匹配的任何 .y 列,并在合并后删除它们。
如果我们假设所有列冗余都应该被删除
no_duplicate <- data_set[!duplicated(as.list(data_set))]
会成功的。
as.list
将 data.frame 转换为其所有列的列表,并且duplicated
将返回那些所有值都与先前看到的列重复的列的索引。
这不会直接尝试比较 .x 和 .y 列,而是保留每个重复列的一个副本,我认为这是主要目标。另一方面,它还将删除与另一个 .x 列重复的任何 .x 列。
如果我们想保留所有 .x 列,即使是重复的列,一个好的解决方案可能是进行过滤before合并。假设你有data_x
and 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"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)