如何保留真正的唯一行?

发布于 2025-01-11 00:15:53 字数 720 浏览 0 评论 0原文

这里是一个矩阵的例子,

ABC
111
114
124
211
311
312

我想只提取 A 和 B 中唯一的行 。 我不能使用唯一、重复等,因为它们始终保留我的重复行之一。

在最终结果中,我希望获得:

ABC
124
211

我该怎么做? 谢谢

Here an example of a matrix,

ABC
111
114
124
211
311
312

I would like extract only rows which are unique in A and B.
I can't use unique, duplicate etc. because they retain always one of my duplicated row.

In final result I wish obtain:

ABC
124
211

How can I do it?
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

無處可尋 2025-01-18 00:15:53

这里有几个选项 -

  1. Base R -
cols <- c('A', 'B')
res <- df[!(duplicated(df[cols]) | duplicated(df[cols], fromLast = TRUE)), ]
res

#  A B C
#3 1 2 4
#4 2 1 1
  1. dplyr -
library(dplyr)
df %>% group_by(A, B) %>% filter(n() == 1) %>% ungroup

# A tibble: 2 x 3
#      A     B     C
#  <int> <int> <int>
#1     1     2     4
#2     2     1     1

Here are couple of options -

  1. Base R -
cols <- c('A', 'B')
res <- df[!(duplicated(df[cols]) | duplicated(df[cols], fromLast = TRUE)), ]
res

#  A B C
#3 1 2 4
#4 2 1 1
  1. dplyr -
library(dplyr)
df %>% group_by(A, B) %>% filter(n() == 1) %>% ungroup

# A tibble: 2 x 3
#      A     B     C
#  <int> <int> <int>
#1     1     2     4
#2     2     1     1
千と千尋 2025-01-18 00:15:53

data.table

df <- data.frame(
  A = c(1L, 1L, 1L, 2L, 3L, 3L),
  B = c(1L, 1L, 2L, 1L, 1L, 1L),
  C = c(1L, 4L, 4L, 1L, 1L, 2L)
)

library(data.table)
setDT(df)[, .SD[.N == 1], by = list(A, B)]
#>    A B C
#> 1: 1 2 4
#> 2: 2 1 1

reprex 包于 2022 年 2 月 28 日创建(v2.0.1)

data.table

df <- data.frame(
  A = c(1L, 1L, 1L, 2L, 3L, 3L),
  B = c(1L, 1L, 2L, 1L, 1L, 1L),
  C = c(1L, 4L, 4L, 1L, 1L, 2L)
)

library(data.table)
setDT(df)[, .SD[.N == 1], by = list(A, B)]
#>    A B C
#> 1: 1 2 4
#> 2: 2 1 1

Created on 2022-02-28 by the reprex package (v2.0.1)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文