按条件在R中选择多行

时间:2017-10-11 13:34:40

标签: r select intervals tidyverse

我有以下数据集的摘录:

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

我想选择间隔[-1:1],它对应于降级前一天和后一天。在“评级机构”列不是“NA”的行处表示已发生降级。在上面的例子中,行[990:992]。

我的数据集有45276个条目,536个降级(“评级机构”栏目不是“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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

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,]