dplyr或plyr是否具有余数功能?
dplyr或plyr是否具有余数功能 假设我有一系列的模式(1-25)要研究 例如,数据集Maindplyr或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 |
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