Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用ID和日期替换类别值_R - Fatal编程技术网

R 用ID和日期替换类别值

R 用ID和日期替换类别值,r,R,我有一个每天可以分为两类的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

我有一个每天可以分为两类的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    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以前是如何分类的,它都不会受到影响。

因为我们只为每个组的“类别”查找一个“A”实例,我们可以使用
if/else
,它寻找返回
length
1的逻辑表达式

library(dplyr)
df %>%
   group_by(ID, Date) %>%
   mutate(Category = if("A" %in% Category) "A" else "B")
# A tibble: 6 x 3
# Groups:   ID, Date [2]
#     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     
数据 像这样的东西

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日期类别
111112020-09-10a
111112020-09-10a
311112020-09-10a
422222020-09-11b
522222020-09-11b
622222020-09-11b
     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