首页 > 解决方案 > 选择在 R 中使用 distinct 函数时要保留的行

问题描述

我有一个看起来像这样的数据框:

  company eh
1       A  1
2       A  3
3       B  2
4       C  2
5       C  1
6       D  3
7       E  1
8       F  3
9       F  1

如您所见,我有重复的公司 A、C 和 F 行。这是因为有些公司可以在 'eh' 列中同时采用值 1、2 和 3。我想最终每家公司只有一行,所以我运行以下代码:

df <- distinct(df, company, .keep_all = TRUE)

结果是:

  company eh
1       A  1
2       B  2
3       C  2
4       D  3
5       E  1
6       F  3

但是,这会从“eh”列中删除随机行。但是我想要的 'eh' 列是保持值 1 超过 2 和 3。换句话说,如果公司的 'eh' 值同时采用 1 和 3,我宁愿保留值为 1 的行。所以我想得到这样的结果(删除第 2、4 和 8 行):

  company eh
1       A  1
2       B  2
3       C  1
4       D  3
5       E  1
6       F  1

我怎样才能做到这一点?

标签: rduplicatesdistinct

解决方案


base R,我们可以做

dat1 <- dat[order(dat$company, dat$eh),]
dat1[!duplicated(dat1$company),]

推荐阅读