我正在尝试编写一个代码,根据它的内容删除一个观察。其思想是,每一次观察都必须在初始/前期之后进行回顾。
我的数据框架如下所示:
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 我的dput代码:
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")))
)发布于 2019-07-16 14:06:09
一种方法是简单地保留多于1行的组和条目Review,即
library(dplyr)
tt %>%
group_by(ID) %>%
filter(n() > 1 & any(Type == 'Review'))发布于 2019-07-16 13:45:56
每一次观察都必须在初始/前期之后进行一次回顾。
获取Type == "Review"的所有索引并提取它的最后一个索引,并将其与c("Pre-Initial", "Initial")索引进行比较,如果索引的any更大,则选择group。
library(dplyr)
tt %>%
group_by(ID) %>%
filter(any(tail(which(Type == "Review"), 1) >
which(Type %in% c("Pre-Initial", "Initial"))))
# ID Type Registered
# <chr> <chr> <chr>
#1 P40 Pre-Initial Yes
#2 P40 Review ""
#3 P40 Review ""
#4 P43 Initial Yes
#5 P43 Review ""
#6 P44 Pre-Initial Yes
#7 P44 Review "" https://stackoverflow.com/questions/57058240
复制相似问题