有什么方法可以使用 tidyverse 的 add_count() %>% filter() 或 distinct() 或看门人的 get_dupes() 来查找并保留每列的重复项。无需将不同列的项目相互比较,每个列都需要单独考虑。
data1 <-tribble(
~colA, ~colB,
"a", 1,
"b", 1,
"c", 2,
"c", 3
)
预期输出为
colA colB
c 1
最佳答案
您可以尝试使用 map_dfc
,它将映射到列上并按列绑定(bind)输出返回数据框
library(tidyverse)
data1 %>%
map_dfc(~.x[duplicated(.x)])
# A tibble: 1 x 2
colA colB
<chr> <dbl>
1 c 1
然而,当每列由于回收而具有不同数量的重复项时,这将导致不需要的行为(当对要求它们具有相同长度的两个向量应用操作时 - 如列绑定(bind),R 会自动重复较短的那个,直到它足够长以匹配较长的那个)。
data1 <-tribble(
~colA, ~colB,
"a", 1,
"b", 1,
"c", 2,
"c", 3,
"d", 1,
)
data1 %>%
map_dfc( ~.x[duplicated(.x)])
# A tibble: 2 x 2
colA colB
<chr> <dbl>
1 c 1
2 c 1
这里colA
已经被回收以匹配colB
的长度。在这种情况下,您最好返回带有 map
data1 %>%
map( ~.x[duplicated(.x)])
#output
$colA
[1] "c"
$colB
[1] 1 1
关于r - 在 R 的每一列中查找并保留重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67832932/