我正在试着写一个R代码,比较两列按其Id分组。我的想法是筛选列,以便它只显示参加过初始会议和审查会议的ID。
这是我的数据框的方式:
ID Initial Review Type
P40 Yes Meeting1
P40 Yes Meeting2
P42 Yes Meeting1
P42 No Meeting2
P43 Yes Meeting1
P43 Yes Meeting2
P44 Yes Meeting1
P44 No Meeting2这就是我想要实现的:
ID Initial Review Type
P40 Yes Meeting1
P40 Yes Meeting2
P43 Yes Meeting1
P43 Yes Meeting2我尝试过使用OR和and逻辑运算符。OR给了我错误的结果,而我得到的数据框是空的。
tt %>% group_by(ID) %>% filter(Initial == "Yes" & Review == "Yes")发布于 2019-07-15 17:05:59
df %>% group_by(ID) %>% filter(any(Initial == "Yes") && any(Review == "Yes"))说明:Initial == "Yes"是一个包含两个元素的向量,每个元素对应一个给定ID的行。例如,对于P40,它是c(TRUE, FALSE)。除了这里的向量是c(FALSE, TRUE)之外,Review == "Yes"也是如此。现在,c(TRUE, FALSE) & c(FALSE, TRUE)是c(FALSE, FALSE),这就是为什么你会得到一个空的df。
在我的解决方案中,你会得到一个单一的值。对于P40,any(Initial == "Yes")是TRUE,any(Review == "Yes")也是真的,TRUE && TRUE是TRUE。现在因为我们需要一个长度为2的向量,R自动扩展向量,用TRUE填充它,这就是为什么你得到P40的两行。
https://stackoverflow.com/questions/57036307
复制相似问题