根据另一列的值删除重复行

Remove duplicate rows based on value of another column

我是 R 新手,这是我的第一个 SO post(但我是一个长期用户),如果这是一个愚蠢的问题,我深表歉意。在此先感谢您的帮助。

我有一个包含 50 多列的大型数据集。人为错误导致某些项目输入两次,但关键变量中的信息不同。为简单起见,我将其简化为两列问题:教师-class 编号 (tc_num)、考试状态 (x_gen).

不幸的是,我无法分享实际的数据集,但这基本上是我所拥有的:

tc_num x_gen
12355 N
12355 Y
26421 Y
26421 N
78943 N
45679 Y

在重复 tc_num 值的情况下(例如,12355、26421),我想 select 具有“Y”值的行并丢弃“N”值 但是,大多数tc_num 值是唯一的(例如,78943、45679),我想保留所有这些行(换句话说,我不能只丢弃 x_gen =“N”的所有行)。

所以,我想保留所有行,除非存在重复的 tc_num 值,在这种情况下,我想保留具有“Y”值的行。

提前致谢。我很感谢这个社区,多年来它对我帮助很大。

subset(df, x_gen == "Y" | ave(tc_num, tc_num, FUN = length) == 1)