gpt4 book ai didi

r - 删除具有多个分组条件的重复项

转载 作者:行者123 更新时间:2023-12-01 23:19:24 25 4
gpt4 key购买 nike

我想删除具有多个分组条件的重复项,但得到的结果总是比预期的少。

数据框每年比较两家公司。像这样:

<表类="s-表"><头><第>年c1c2<正文>2000一个b2000一个c2000一个d2001一个b2001bd2001一个c

对于每个 c1,我想查看 c2 并删除前一年的行。我发现了一个类似的问题,但只有一个 c。以下是我目前的一些尝试:

df<- df%>%
group_by(c1,c2) %>%
mutate(dup = n() > 1) %>%
group_split() %>%
map_dfr(~ if(unique(.x$dup) & (.x$year[2] - .x$year[1]) == 1) {
.x %>% slice_head(n = 1)
} else {
.x
}) %>%
select(-dup) %>%
arrange(year)
df<- sqldf("select a.*
from df a
left join df b on b.c1=a.c1 and b.c2 = a.c2 and b.year = a.year - 1
where b.year is null")

该示例所需的输出为:

<表类="s-表"><头><第>年c1c2<正文>2000一个b2000一个c2000一个d2001bd

最佳答案

假设您只想检查前一年的重复项。因此,在修改后的样本

上向您展示
library(tidyverse)

df <- read.table(header = T, text = 'year c1 c2
2000 a b
2000 a c
2000 a d
2001 a b
2001 b d
2001 a c
2002 a d')

df %>%
filter(map2_lgl(df$year, paste(df$c1, df$c2), ~ !paste(.x -1, .y) %in% paste(df$year, df$c1, df$c2)))
#> year c1 c2
#> 1 2000 a b
#> 2 2000 a c
#> 3 2000 a d
#> 4 2001 b d
#> 5 2002 a d

reprex package 创建于 2021-07-08 (v2.0.0)

关于r - 删除具有多个分组条件的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68304355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com