我试图在向量中找到存在冲突值的实例。
以下是我的数据示例:
x <- rep(c("SP", "MC: SP", "3xSP", "MC", "BF"), 10)
z<- rep(c("SP", "MC", "BF", "OFF SP", "SP"), 10)
d <- rep(c("SP", "OFF SP", "MC", "OFF SP", "SP"), 10)
y <- rep(c("OFF SP", "SP", "MC", "BF", "DC"), 10)
specials <- paste(x, y, z, d, sep = " ")
comp <- abs(rnorm(50))
data <- data.frame(specials, comp)
我想要做的是创建一个新的数据框(比如说“冲突”),其中包含特殊包含“OFF SP”和任何版本的“SP”(“3xSP”的所有实例的“comp”数字“,”2 SP:MC“等)
我使用函数grep()
将数据子集化为特殊包含“SP”或“OFF SP”的实例
SPsub <- data[grep("SP", data$specials), ]
OFFSPsub <- data[grep("OFF SP", data$specials), ]
但是我想要一个新的数据帧,它是数据的一个子集,它只包含特殊时间包含某个版本的“SP”和“OFF SP”的信息
有没有办法做到这一点?
我试过这个,但它不起作用;并返回一个空数据框
OnlySP <- SPsub[!grep("OFF", SPsub$comp), ]
由于
答案 0 :(得分:1)
只需使用grepl()
:
> data[grepl("SP OFF.*SP|SP.*SP OFF", data$specials), ]
specials comp
1 SP OFF SP 0.73167778
6 SP OFF SP 0.57968263
11 SP OFF SP 0.26899478
16 SP OFF SP 0.09352101
21 SP OFF SP 0.82593920
26 SP OFF SP 1.63878597
31 SP OFF SP 0.07576427
36 SP OFF SP 0.14606374
41 SP OFF SP 0.20326698
46 SP OFF SP 0.92467844
我使用了以下正则表达式模式:
SP OFF.*SP|SP.*SP OFF
这与SP OFF
之后或第二次SP
之后匹配client.responseSerializer.acceptableContentTypes = [client.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
。