首页 > 解决方案 > 按 ID 和日期替换类别值

问题描述

我有一个 ID 列表,每天可以分为两类,我们称它们为“A”和“B”。ID 通常每天出现 0-2 次,但可以更频繁地出现。由于数据质量不佳,某些 ID在特定日期同时显示为A 和 B。所以不要看起来像这样:

ID    Date        Category
1111  2020-09-10  A
1111  2020-09-10  A
1111  2020-09-10  A

它们看起来像这样:

ID    Date        Category
1111  2020-09-10  A
1111  2020-09-10  B
1111  2020-09-10  B

我需要修复它,以便如果某个 ID 在一天内属于 A 类,那么该 ID 当天的所有记录都显示为 A 类。但是如果那天的所有记录都显示为“B”,不管如何该 ID 之前已分类,将不受影响。

标签: r

解决方案


像这样的东西?

library("dplyr")

df = data.frame("ID" = c(1111, 1111, 1111, 2222, 2222, 2222),
                "Date" = c("2020-09-10", "2020-09-10", "2020-09-10",
                           "2020-09-11", "2020-09-11", "2020-09-11"),
                "Category" = c("A", "B", "B", "B", "B", "B"))

df %>% 
  group_by(ID, Date) %>% 
  mutate(Category = ifelse("A" %in% Category, "A", "B"))
     ID Date       Category
  <dbl> <chr>      <chr>   
1  1111 2020-09-10 A       
2  1111 2020-09-10 A       
3  1111 2020-09-10 A       
4  2222 2020-09-11 B       
5  2222 2020-09-11 B       
6  2222 2020-09-11 B   

推荐阅读