如何消除格式为00.00.00A的代码

时间:2014-11-18 10:16:46

标签: r

我想从data.frame中删除一些格式为00.00.00U的变量,例如:消除包含以下内容的向量:

 toMatch<-paste(c(18.00.00:20.00.00),c('U','B','R'))
 Errore: unexpected numeric constant in "toMatch<-paste(c(18.00.00"

我需要消除18.00.0118.00.02等,直到20.00.00并且我不想全部写出来。 感谢

2 个答案:

答案 0 :(得分:0)

首先必须生成代码:

codes<-sapply(180001:200000,
             function(x){
                decomp<-unlist(strsplit(as.character(x),""))
                y<-paste(paste(decomp[seq(1,6,2)],decomp[seq(2,6,2)],sep=""),collapse=".")
                return(y)})

然后你可以这样做:

toMatch<-paste(rep(codes,e=3),c('U','B','R'),sep="")

toMatch[1:5]
[1] "18.00.01U" "18.00.01B" "18.00.01R" "18.00.02U" "18.00.02B"

答案 1 :(得分:0)

尝试

op <- options(scipen=100, digits=2)
s1 <- seq(180001, 200000, by=1)

s2 <- sprintf('%02d.%02d.%02d', 
                          as.numeric(substr(s1,1,2)),
                          as.numeric(substr(s1,3,4)),
                          as.numeric(substr(s1,5,6)))
toMatch <- paste0(s2, rep(c('U', 'B', 'R'),each=length(s2)))
head(toMatch)
#[1] "18.00.01U" "18.00.02U" "18.00.03U" "18.00.04U" "18.00.05U" "18.00.06U"

如果df是数据集,并且您想删除与toMatch中与特定列Col1

相匹配的行
df1 <- df[!df$Col1 %in% toMatch, ]