选择在R中使用不同函数时要保留的行



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

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

我该怎么做?

您可以先通过companyeharrange进行数据处理。distinct将保留第一行:

dat <- read.table(text = "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", header = TRUE)
library(dplyr)
dat %>% 
arrange(company, eh) %>% 
distinct(company, .keep_all = TRUE)
#>   company eh
#> 1       A  1
#> 3       B  2
#> 5       C  1
#> 6       D  3
#> 7       E  1
#> 9       F  1

由reprex软件包(v1.0.0)于2021-02-11创建

base R中,我们可以进行

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

相关内容

  • 没有找到相关文章

最新更新