2013-02-14 102 views
-1

我具有由简单的图案13位数字的字段如下:用1位数号码替换第4个位数号码的

df$serialno[100:105] 
2009000007657 2008000007665 2010000007782 2011000007810 2007000007832 

我想用1替换前4位 - 数位数目如下:

df$serialno[100:105] 
3000007657 2000007665 4000007782 5000007810 1000007832 

其中2007 = 1 2008 = 2 2009 = 3 2010 = 4,和2011 = 5。现在,该字段应该由10位数字组成。你能给我一些建议吗?

我感谢您的帮助!

回答

2

你只是想减去2007e9并添加1e9或者减去2006e9。因此,

df <- data.frame(serialno=c(2009000007657,2008000007665,2010000007782,2011000007810,2007000007832)) 
df 
# serialno 
#1 2.009e+12 
#2 2.008e+12 
#3 2.010e+12 
#4 2.011e+12 
#5 2.007e+12 

df$serialno <- df$serialno - 2006000000000 
df 
# serialno 
#1 3000007657 
#2 2000007665 
#3 4000007782 
#4 5000007810 
#5 1000007832 
+0

是的,您是对的......谢谢!!! – POTENZA 2013-02-14 21:17:28

1

解决此问题的一种方法是多次使用sub()。例如,要修复从2009年开始的条目,您可以这样做:

df$serialno <- sub("^2009","3",df$serialno) 
+0

这也是有用的知道。谢谢!!! – POTENZA 2013-02-14 21:22:24