dplyr或plyr是否具有余数功能?

dplyr或plyr是否具有余数功能?,r,dplyr,plyr,R,Dplyr,Plyr,dplyr或plyr是否具有余数功能 假设我有一系列的模式(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 |

dplyr或plyr是否具有余数功能

假设我有一系列的模式(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

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

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

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
idc3=c(23,24)

indx我不清楚这与dplyr的关系。。。您的数据是否有
id
列?如果您有一个名为
id
的唯一行标识符,那么您的
余数=Main[!Main$id%in%c(cut$id,cut2$id,cut3$id),]
。我相信比正则表达式更合适的方法是
Reduce(|),lappy(Main[c(“MODE1”,“MODE2”,“MODE3”)],“%in%”,c(23,24))
来检查每一行是否有任何“MODE”带有23或24的列。如果你否定(
)这一点,你会得到第二个想要的结果。谢谢Alexis_laz我会试试的谢谢Gregor的帮助
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