2015-05-31 65 views
1

我有一個數據框如下。我想借此一戰列,創建新列newww1如下:R文本操作

我的Excel公式是

=2012&TEXT((LEFT(201438,4)-2012)*53+RIGHT(201438,2),"0000") 

,其中,代替201438我將不得不從列WW1

的解釋值我公式爲:

take left 4 characters of ww1 
subtract 2012 from them 
multiply answer by 53 
add answer to right 2 characters of ww1 
print answer in "0000" format 
concatenate that answer with 2012. 

我的數據

PRODUCT=c(rep("A",4),rep("B",2)) 
ww1=c(201438,201440,201444,201446,201411,201412) 
ww2=ww1-6 
DIFF=rep(6,6) 
DEMAND=rep(100,6) 

df=data.frame(PRODUCT,ww1,ww2,DIFF,DEMAND) 

df 

    PRODUCT ww1 ww2 DIFF DEMAND 
1  A 201438 201432 6 100 
2  A 201440 201434 6 100 
3  A 201444 201438 6 100 
4  A 201446 201440 6 100 
5  B 201411 201405 6 100 
6  B 201412 201406 6 100 

這是我的數據會如何看待年底

PRODUCT ww1 ww2 DIFF DEMAND newww1 
1 A 201438 201432 6 100 20120144 
2 A 201440 201434 6 100 20120146 
3 A 201444 201438 6 100 20120150 
4 A 201446 201440 6 100 20120152 
5 B 201411 201405 6 100 20120117 
6 B 201412 201406 6 100 20120118 
+0

下面的答案是你在尋找什麼,但這裏有一個可用的幾個選項:HTTP://計算器。 COM /問題/ 15498235 /如何對分裂一數 - 到 - 數字 - 在-R –

回答

1
df$newww1 = paste0('2012', sprintf('%04d', 
        53 * (as.numeric(substr(df$ww1, 1, 4)) - 2012) + 
          as.numeric(substr(df$ww1, 5, 6)) 
         ) 
       )