我试图获得一个新的数据框,其中包含许多选定列中的所有重复元素。因此,例如,如果我有以下df,我想按V2,V3,V4列搜索重复的元素。
V1 V2 V3 V4 V5
1 zz aa ee 213
2 aa ff xx 254
3 bb hh gg 235
4 zz hh hh 356
5 yy cc dd 796
6 ii jj kk 954
我想获取所有包含至少一个元素的行,这些元素与所选的其他列或行中的另一个元素重复。此外,R中的重复函数仅选择重复项,而忽略了“原始值”,我也想将其包括在内。
因此,最终的df如下所示:
V1 V2 V3 V4 V5
1 zz aa ee 213
2 aa ff xx 254
3 bb hh gg 235
4 zz hh hh 356
使用基数R,我们可以unlist
选择列(cols
),获取duplicated
值并选择具有这些值的行。
cols <- c('V2', 'V3', 'V4')
vals <- unlist(df[cols])
df[Reduce(`|`, lapply(df[cols], `%in%`, vals[duplicated(vals)])), ]
# V1 V2 V3 V4 V5
#1 1 zz aa ee 213
#2 2 aa ff xx 254
#3 3 bb hh gg 235
#4 4 zz hh hh 356
数据
df <- structure(list(V1 = 1:6, V2 = structure(c(5L, 1L, 2L, 5L, 4L,
3L), .Label = c("aa", "bb", "ii", "yy", "zz"), class = "factor"),
V3 = structure(c(1L, 3L, 4L, 4L, 2L, 5L), .Label = c("aa",
"cc", "ff", "hh", "jj"), class = "factor"), V4 = structure(c(2L,
6L, 3L, 4L, 1L, 5L), .Label = c("dd", "ee", "gg", "hh", "kk",
"xx"), class = "factor"), V5 = c(213L, 254L, 235L, 356L,
796L, 954L)), class = "data.frame", row.names = c(NA, -6L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句