大きなデータセットがあります。 すべての不正な行を削除します。また、私は間違った行の前後にいくつかの行を削除したい。不適切な行をフィルタリング/削除する(プラスおよびそれ以下)
私は何か役に立つと感じました。しかし、残念ながらそれは私のためにうまくいかない。 私は "rownames"と関係があると思いますが、私はそれを修正することができません。 ご迷惑をおかけして申し訳ございません。
library(dplyr)
var1 <- 1:20
var2 <- c(1,1,1,1,0,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1)
var3 <- rep(3, 20)
dat <- data.frame (var1, var2, var3)
View(dat)
extract.with.context <- function(x, rows, after = 0, before = 0) {
match.idx <- which(rownames(x) %in% rows)
span <- seq(from = -before, to = after)
extend.idx <- c(outer(match.idx, span, `+`))
extend.idx <- Filter(function(i) i > 0 & i <= nrow(x), extend.idx)
extend.idx <- sort(unique(extend.idx))
return(x[extend.idx, , drop = FALSE])
}
extract.with.context(dat, dat$var2==0, after = 1, before = 1)
View(dat)
#expected output
var1 <- c(1,2,3,9,14,15,16,20)
var2 <- c(1,1,1,1,1,1,1,1)
var3 <- rep(3,length(var2))
dat <- data.frame(var1, var2, var3)
View(dat)
"不正な行が" 何ですか?また、予期した出力を追加してください。 – Sotos
不正な行はそれらのものですvar2 == 0 – SDahm
前/後が同じなら、あなたは 'dat [!zoo :: rollsum(dat $ var2 == 0、k = 3、fill = FALSE)> 0、] ' –