【问题标题】:Remove Duplicates from Col X based on condition in Col Y根据 Col Y 中的条件从 Col X 中删除重复项
【发布时间】:2019-04-23 14:39:24
【问题描述】:

我在 R 中有一个数据框,其中一列中有重复项,但我只想根据另一列中的规范删除重复项。

例如:

DF:

X    J    Y
1    2    3
2    3    1
1    3    2

我想删除行,其中X 是重复的,= 3

DF:

X    J    Y
2    3    1
1    3    2

我尝试在dplyr 上阅读,但到目前为止只能获得所需的结果。

【问题讨论】:

  • 有两个“X”列。我认为这是第一个,对吧?
  • 如果要删除 X 重复且 Y 为 3 的行,那么为什么预期输出中的第 3 行
  • 你的权利,第三列应该是Z,我会马上解决的
  • 另外,你的描述和输出有冲突
  • @akrun,你又是对的,我已经更新了这个,你的解决方案有效

标签: r dataframe duplicates


【解决方案1】:

我们可以使用duplicated 和相等运算符来创建条件

subset(df1, !((duplicated(X)|duplicated(X, fromLast = TRUE)) & Y == 3))
#  X J Y
#2 2 3 1
#3 1 3 2

如果我们需要删除整组“X”的行,如果有任何“Y”的值为3,那么

library(dplyr)
df1t %>% 
     group_by(X) %>%
     filter(! 3 %in% Y) #or
     # filter(all(Y != 3))

【讨论】:

  • 你好 akrun,它适用于那个小例子,但是当我将它扩展到 X
  • @Pythonuser 这里的预期输出是什么
  • 我将编辑原始问题,我不知道如何,将其显示在 cmets 中
  • @Pythonuser 你可以试试library(dplyr);df1t %>% group_by(X) %>% filter(n() == 1| Y != 3)
  • @Pythonuser 你能编辑你的帖子并更新预期的输出吗
猜你喜欢
  • 2020-01-08
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多