想要添加一个列,其中包含周数,即01,02,06 ... 32,并在除以13时给出提醒(一个季度包含13周)
DF
Year Quarter Weeks
2014-FY 2014-Q1 2014-W01
2014-FY 2014-Q1 2014-W02
2014-FY 2014-Q1 2014-W06
2014-FY 2014-Q1 2014-W011
2014-FY 2014-Q1 2014-W013
2014-FY 2014-Q1 2014-W014
2014-FY 2014-Q1 2014-W025
2014-FY 2014-Q1 2014-W032
所以输出应该如下所示:
Year Quarter Weeks Weeks.rltv
2014-FY 2014-Q1 2014-W01 1
2014-FY 2014-Q1 2014-W02 2
2014-FY 2014-Q1 2014-W06 6
2014-FY 2014-Q1 2014-W011 11
2014-FY 2014-Q1 2014-W013 13
2014-FY 2014-Q1 2014-W014 2
2014-FY 2014-Q1 2014-W025 12
2014-FY 2014-Q1 2014-W032 6
答案 0 :(得分:1)
我认为我们可以忽略这一年,并且每个季度内的周数应该从1到13(而不是0到12)编号,因此我们必须从周中减去1,取余数并加1。没有使用包裹:
transform(DF, weeks.rltv = (as.numeric(sub(".*W", "", Weeks)) - 1) %% 13 + 1)
,并提供:
Year Quarter Weeks weeks.rltv
1 2014-FY 2014-Q1 2014-W01 1
2 2014-FY 2014-Q1 2014-W02 2
3 2014-FY 2014-Q1 2014-W06 6
4 2014-FY 2014-Q1 2014-W011 11
5 2014-FY 2014-Q1 2014-W013 13
6 2014-FY 2014-Q1 2014-W014 1
7 2014-FY 2014-Q1 2014-W025 12
8 2014-FY 2014-Q1 2014-W032 6
注意:可重复形式的输入DF
为:
Lines <- "Year Quarter Weeks
2014-FY 2014-Q1 2014-W01
2014-FY 2014-Q1 2014-W02
2014-FY 2014-Q1 2014-W06
2014-FY 2014-Q1 2014-W011
2014-FY 2014-Q1 2014-W013
2014-FY 2014-Q1 2014-W014
2014-FY 2014-Q1 2014-W025
2014-FY 2014-Q1 2014-W032"
DF <- read.table(text = Lines, header = TRUE)