【发布时间】:2019-01-12 17:43:10
【问题描述】:
我正在尝试对 R 中的数据框进行子集化。它包含多个类别。需要删除每个类别的前几行。要删除的行数不一致,但有一行表示截止。如何删除每个组的截止值(包括该行)之上的所有内容?
示例数据:
category <- c(rep("A", 3), rep("B", 5), rep("C", 4))
info <- as.character(c("Junk", "Border", "Useful",
"This", "is", "Useless", "Border", "Yes please",
"Unwanted", "Row", "Border", "Required"))
example_df <- data.frame(category, info)
example_df$row_number <- 1:nrow(example_df)
我可以提取边框的行号和每组的开始:
border_rows <- which(example_df$info == "Border")
start_rows <- example_df %>%
group_by(category) %>%
slice(1)
start_rows <- start_rows$row_number
我尝试了以下方法,但这只会删除前两行(即需要为 A 组删除的行)。
for(i in 1:length(border_rows)) {
new_df <- example_df[-(start_rows[i]:border_rows[i]), ]
}
【问题讨论】: