R中的字符串拆分操作

时间:2016-10-07 20:00:57

标签: r string lapply

在我的数据中,我有一列字符串。每个字符串长度为五个字符。我想弄清楚如何拆分字符串,以便保留前两个字符,后两个字符,并忽略中间或第三个字符。

我查看了其他stackoverflow问题,发现下面列出的答案很有帮助。最初,下面的解决方案是有用的,直到我看到它在某些情况下它不起作用或它以我没想到的方式工作。

这就是我所拥有的:

statecensusFIPS <- c("01001", "03001", "13144")
newFIPS <- lapply(2:3, function(i){
    if(i==2){
        str_sub(statecensusFIPS, end = i)
    } else {
        str_sub(statecensusFIPS, i)
    }})

StateFIPS <- newFIPS[[1]]
CountyFIPS <- newFIPS[[2]]

# Results
> StateFIPS
[1] "01" "03" "13"
> CountyFIPS
[1] "001" "001" "144"

如何调整代码以便我获得这些结果呢?

StateFIPS
[1] "01" "03" "13"
CountyFIPS
[1] "01" "01" "44"

1 个答案:

答案 0 :(得分:0)

这个怎么样(假设你想要前2个字符作为状态字段,你的字符串的最后2个字符是县fips,所有字符串的长度都是5)?

statecensusFIPS<-c("01001", "03001", "13144")
newFIPS<-lapply(2:3,function(i) if(i==2) str_sub(statecensusFIPS,end=i) else str_sub(statecensusFIPS,i+1)) 

StateFIPS<-newFIPS[[1]]
CountyFIPS<-newFIPS[[2]]

更简单的方法可能是:

statecensusFIPS<-c("01001", "03001", "13144")
stateFIPS<- str_sub(statecensusFIPS,end=2) 
CountyFIPS<- str_sub(statecensusFIPS,4)