【问题标题】:R text manipulationR 文本操作
【发布时间】:2015-05-31 02:34:45
【问题描述】:

我有一个如下的数据框。我想取 ww1 列并创建一个新列 newww1 如下:

我的 Excel 公式是

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

我将在 ww1 列中获得一个值,而不是 201438

我的公式的解释是:

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

【问题讨论】:

标签: r dataframe


【解决方案1】:
df$newww1 = paste0('2012', sprintf('%04d', 
                    53 * (as.numeric(substr(df$ww1, 1, 4)) - 2012) + 
                          as.numeric(substr(df$ww1, 5, 6))
                         )
                  )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多