dplyr或plyr是否具有余数函数?

时间:2016-01-27 20:00:05

标签: r dplyr plyr

dplyr或plyr是否具有余数函数?

假设我有一系列的MODE(1-25)来研究

例如数据集Main

idc3 = c("23|24")

column0|column1|column2|column3|MODE1|MODE2|MODE3
     4 |  83   |   23  |   863 | 85  | 86  |  45
    53 |  26   |   9   |   153 | 23  | 34  |  85
    33 |  66   |   91  |   693 | 95  | 23  |  74
     6 |  87   |   27  |   863 | 47  | 56  |  52
    57 |  27   |   9   |   153 | 78  | 38  |  64
    37 |  67   |   97  |   693 | 34  | 86  |  24

cut  <- Main[unique(grep(paste(idc3), Main$MODE1)), ]
cut2 <- Main[unique(grep(paste(idc3), Main$MODE2)), ]
cut3 <- Main[unique(grep(paste(idc3), Main$MODE3)), ]

  column0|column1|column2|column3|MODE1|MODE2|MODE3
      53 |  26   |   9   |  153  | 23  | 34  |  85
      33 |  66   |   91  |  693  | 95  | 23  |  74
      37 |  67   |   97  |  693  | 34  | 86  |  24

如果我想要其余数据集

,该怎么办?
column0|column1|column2|column3|MODE|MODE2|MODE3
     4 |  83   |   23  |   863 | 85 | 86  |  45        
     6 |  87   |   27  |   863 | 47 | 56  |  52
    57 |  27   |   9   |   153 | 78 | 38  |  64

有办法做到这一点吗?感谢

1 个答案:

答案 0 :(得分:0)

您可以使用一个函数调用创建索引,而不是创建三个单独的剪切。然后,您可以根据需要选择匹配的列或相反的列:

idc3 = c(23,24)
indx <- as.logical(rowSums(sapply(df[,5:7], `%in%`, idc3)))
df[indx,]
#   column0 column1 column2 column3 MODE1 MODE2 MODE3
# 2      53      26       9     153    23    34    85
# 3      33      66      91     693    95    23    74
# 6      37      67      97     693    34    86    24
df[!indx,]
#   column0 column1 column2 column3 MODE1 MODE2 MODE3
# 1       4      83      23     863    85    86    45
# 4       6      87      27     863    47    56    52
# 5      57      27       9     153    78    38    64