【发布时间】:2019-07-16 13:19:39
【问题描述】:
我正在尝试编写一个代码来删除基于其内容的观察。这个想法是,每个观察都必须在初始/预初始之后进行审查。
我的数据框如下所示:
ID Type Registered
P40 Pre-Initial Yes
P40 Review
P40 Review
P42 Initial Yes
P43 Initial Yes
P43 Review
P44 Pre-Initial Yes
P44 Review
我的输入代码:
tt <- structure(list(ID = c("P40", "P40", "P40", "P42", "P43", "P43",
"P44", "P44"),Type = c("Pre-Initial", "Review", "Review", "Initial", "Initial", "Review", "Pre-Initial", "Review"),
Registered = c("Yes", "", "", "Yes", "Yes", "", "Yes", "")),
class = "data.frame", row.names = c(NA, -8L))
我想要达到的目的:
ID Type Registered
P40 Pre-Initial Yes
P40 Review
P40 Review
P43 Initial Yes
P43 Review
P44 Pre-Initial Yes
P44 Review
这是我迄今为止尝试过的代码,但它不起作用。
tt %>% group_by(ID) %>%
slice(which(Registered == "Yes" & any(Type != "Review")))
)
【问题讨论】:
-
您似乎有多个相关问题,如果您更改数据当前的格式,这些问题将大大简化。根本问题是您的数据有空单元格,因为
Registered值不是为Reviews 录制。它是否正确?如果是这样,您选择的表格不是表示数据的好方法。我建议您阅读 Karl Broman 关于 how to structure tabular data 的建议。它可能会使解决您的问题变得更加简单。 -
试试
tt %>% group_by(ID) %>% filter(n() > 1 & any(Type == 'Review')) -
@Sotos,感谢成功