通过过滤并使用特定数字划分另一列来创建列,以获取R中的提醒

时间:2016-07-18 18:07:11

标签: r

想要添加一个列,其中包含周数,即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

1 个答案:

答案 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)