检查 R 中的列集是否相同(按行顺序)

问题描述 投票:0回答:1

我正在 R 工作,如果可能的话更喜欢 dplyr 解决方案。

样本数据:

data.frame(
  col1 = c("a", "b", "c", "d"),
  col2 = c("a", "b", "d", "a"),
  col3 = rep("a", 4L),
  col4 = c("a", "b", "d", "a"),
  col5 = c("a", "a", "c", "d"),
  col6 = rep(c("b", "a"), each = 2L)
)
col1 col2 col3 col4 第5栏 第 6 栏
a a a a a b
b b a b a b
c d a d c a
d a a a d a

问题

我想知道每一行,col1,col2col3是否与col4,col5col6,相同,但应该忽略col1 - col3和col4 - col6的顺序.

因此,对于第 1 行,如果 col1 - col3 分别包含 a、a、b,并且 col4 - col6 分别包含 b、a、a,则将被视为匹配。

想要的结果

在“评估”栏添加注释以帮助理解

col1 col2 col3 col4 第5栏 第 6 栏 评估
a a a a a b FALSE(因为 1-3 与 4-6 不同)
b b a b a b TRUE(因为1-3与4-6相同,如果忽略顺序)
c d a d c a TRUE(因为1-3与4-6相同,如果忽略顺序)
d a a a d a TRUE(因为1-3与4-6相同,如果忽略顺序)
r rowwise
1个回答
0
投票

使用 dplyr 您可以执行以下操作:

df %>%
  rowwise() %>%
  mutate(result = all(sort(c_across(col1:col3)) == sort(c_across(col4:col6))))

# A tibble: 4 × 7
# Rowwise: 
  col1  col2  col3  col4  col5  col6  result
  <chr> <chr> <chr> <chr> <chr> <chr> <lgl> 
1 a     a     a     a     a     b     FALSE 
2 b     b     a     b     a     b     TRUE  
3 c     d     a     d     c     a     TRUE  
4 d     a     a     a     d     a     TRUE  
© www.soinside.com 2019 - 2024. All rights reserved.