Select R 中条件的多行

Select multiple rows by condition in R

我有以下数据集摘录:

extract[989:993, ]
# A tibble: 5 x 2
   Dates                `Rating agency`
   <dttm>                <chr>
1 2014-07-11              NA
2 2014-07-14              NA
3 2014-07-15            DBRS
4 2014-07-16              NA
5 2014-07-17              NA

我想 select 间隔 [-1:1],对应于降级前一天和降级后的一天。在列 "Rating agency" 不是 "NA" 的行表示发生了降级。在我上面的示例中,行 [990:992].

我的数据集有 45276 个条目,其中有 536 个降级(第 "Rating agency" 列不是 "NA"),我想在其中构建一个列表,其中包含降级介于两者之间的 3 行,对于我的整个数据集:

extract[990:992, ]
# A tibble: 3 x 2
   Dates          `Rating agency`
  <dttm>           <chr>
1 2014-07-14              NA
2 2014-07-15            DBRS
3 2014-07-16              NA

我用这个命令试过了:

interval1 <- basisanddowngradessingledates[`Rating agency` != "NA", c(-1:1), ]

导致此错误的原因:

Error in x[j] : only 0's may be mixed with negative subscripts

我做错了什么?

试试这个

keepindex <- which(!is.na(basisanddowngradessingledates[,2]))
# keepindex <- which(basisanddowngradessingledates[,2] == "NA")  # try this if "NA" instead of NA
keepindex <- unique(c(keepindex-1, keepindex, keepindex+1))
basisanddowngradessingledates[keepindex,]