R聪明的方式来清理数据框

时间:2016-04-08 17:32:41

标签: r

我有一个带有两列的数据框,一个索引列,用于索引第二个数据帧中的行。这些行都包含特定事件。这是哪个事件,在第二列中编码,此处命名为index <- c(769, 766, 810, 813, 830, 842, 842, 892, 907, 944) code_start_stop <- c(2006, 2001, 2004, 1001, 1004, 2001, 1001, 1006, 2004, 1004) replace_all <- data.frame(index, code_start_stop)

示例:

{{1}}

现在有成对的开始/停止代码,即2001和1001,2002和1002等。目的是,如果有行被开始标记包围(即2006年)和相应的下一站点标记(此处为1006),应从数据框中删除这些行。 请注意,始终有一对开始&amp;停止标记。

任何有关如何做到这一点的聪明方法的建议都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

你的问题有点令人困惑,如果我弄错了,请纠正我。 以下应该有效:

startm <- 2006 #startmarker
endm   <- 1006 #endmarker

 #look for  row that contains markers
 index1 <- which(replace_all[,2]  == startm) 
 index2 <- which(replace_all[,2]  == endm)

 #subset accordingly
 replace_all <- replace_all[-(index1:index2),]

注意:这也会删除包含标记的行。如果您只想删除标记之间的行,请在子集步骤中添加+ 1 / -1。