пытаюсь описать подробно.
Это первая таблица
itogo=structure(list(cfo = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "НСК", class = "factor"), code = structure(c(1L,
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), .Label = c("PlanНСК1", "PlanНСК2",
"PlanНСК3", "PlanНСК4", "PlanНСК5"), class = "factor"), customer_name = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "ТС", class = "factor"),
sales_volume_name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "от 50 до 100 кг", class = "factor"),
shop_group_name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "loc", class = "factor"), product_id = c(11628L,
11628L, 11628L, 11628L, 11628L, 11709L, 11709L, 11709L, 11709L,
11709L), shop_code = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L), .Label = "02293НСК", class = "factor"),
rpost2019.01 = c(3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L),
rpost2019.02 = c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L),
rpost2019.03 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L),
rpost2019.04 = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L),
rpost2019.05 = c(1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L),
rpost2019.06 = c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L),
regplan.2019.01.meanot.2018.01_amount = c(3794.4, 3794.4,
3794.4, 3794.4, 3794.4, 2514.54, 2514.54, 2514.54, 2514.54,
2514.54), regplan.2019.02.meanot.2018.02_amount = c(2529.6,
2529.6, 2529.6, 2529.6, 2529.6, 1436.88, 1436.88, 1436.88,
1436.88, 1436.88), regplan.2019.03.meanot.2018.03_amount = c(4637.6,
4637.6, 4637.6, 4637.6, 4637.6, 3592.2, 3592.2, 3592.2, 3592.2,
3592.2), regplan.2019.04.meanot.2018.04_amount = c(2529.6,
2529.6, 2529.6, 2529.6, 2529.6, 2873.76, 2873.76, 2873.76,
2873.76, 2873.76), regplan.2019.05.meanot.2018.05_amount = c(1054,
1054, 1054, 1054, 1054, 3412.58982, 3412.58982, 3412.58982,
3412.58982, 3412.58982), regplan.2019.06.meanot.2018.06_amount = c(0,
0, 0, 0, 0, 1077.66, 1077.66, 1077.66, 1077.66, 1077.66),
meanot.2018.03 = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L), .Label = c("5.000000", "5.500000"), class = "factor"),
meanot.2018.04 = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L), .Label = c("6.000000", "8.000000"), class = "factor"),
meanot.2018.05 = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L), .Label = c("5.000000", "6.333333"), class = "factor"),
reg.voz.2019.03.reg.otgruz.план.шт.2019.03 = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "0.00", class = "factor"),
reg.voz.2019.04.reg.otgruz.план.шт.2019.04 = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "0.00", class = "factor"),
NewTT2019.03 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = "0.000000", class = "factor"), NewTT2019.04 = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "0.000000", class = "factor"),
NewTT2019.03_amount = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), NewTT2019.04_amount = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L)), .Names = c("cfo", "code", "customer_name",
"sales_volume_name", "shop_group_name", "product_id", "shop_code",
"rpost2019.01", "rpost2019.02", "rpost2019.03", "rpost2019.04",
"rpost2019.05", "rpost2019.06", "regplan.2019.01.meanot.2018.01_amount",
"regplan.2019.02.meanot.2018.02_amount", "regplan.2019.03.meanot.2018.03_amount",
"regplan.2019.04.meanot.2018.04_amount", "regplan.2019.05.meanot.2018.05_amount",
"regplan.2019.06.meanot.2018.06_amount", "meanot.2018.03", "meanot.2018.04",
"meanot.2018.05", "reg.voz.2019.03.reg.otgruz.план.шт.2019.03",
"reg.voz.2019.04.reg.otgruz.план.шт.2019.04", "NewTT2019.03",
"NewTT2019.04", "NewTT2019.03_amount", "NewTT2019.04_amount"), class = "data.frame", row.names = c(NA,
-10L))
- и второй стол
anyta=structure(list(data = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L,
3L, 4L, 5L), .Label = c("2019-01-04 00:00:00.000", "2019-02-04 00:00:00.000",
"2019-03-04 00:00:00.000", "2019-04-04 00:00:00.000", "2019-05-04 00:00:00.000"
), class = "factor"), cfo = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L), .Label = "НСК", class = "factor"), customer_name = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "TC", class = "factor"),
sales_volume_name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "от 50 до 100 кг", class = "factor"),
shop_group_name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "loc", class = "factor"), shop_code = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "02293НСК", class = "factor"),
product_id = c(11628L, 11628L, 11628L, 11628L, 11628L, 11709L,
11709L, 11709L, 11709L, 11709L), code = structure(c(1L, 2L,
3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), .Label = c("PlanНСК1", "PlanНСК2",
"PlanНСК3", "PlanНСК4", "PlanНСК5"), class = "factor")), .Names = c("data",
"cfo", "customer_name", "sales_volume_name", "shop_group_name",
"shop_code", "product_id", "code"), class = "data.frame", row.names = c(NA,
-10L))
как мы видим во второй таблице, есть столбец data , а в первой таблице нет столбца данных, но есть столбцы int
rpost 2019-01, 2019-02 .... rpost2019-06
01 ... 06 - количество месяцев
01-января
02-февраль
03 Мар
04-апреля
05-мая
06-июня
во второй таблице данных в формате ymd, я должен смотреть только на количество месяцев, здесь 04 , это апрель
так, как это сделать, если во второй таблице в столбце данных номер месяца = 04
тогда все числовые переменные (начиная с rpost) из первой таблицы должны начинаться с этого месяца
т.е. выход
cfo code customer_name sales_volume_name shop_group_name product_id shop_code rpost2019.04 rpost2019.05 rpost2019.06 regplan.2019.04.meanot.2018.04_amount
1 НСК PlanНСК1 ТС от 50 до 100 кг loc 11628 02293НСК 2 1 2 2529.60
2 НСК PlanНСК2 ТС от 50 до 100 кг loc 11628 02293НСК 2 1 2 2529.60
3 НСК PlanНСК3 ТС от 50 до 100 кг loc 11628 02293НСК 2 1 2 2529.60
4 НСК PlanНСК4 ТС от 50 до 100 кг loc 11628 02293НСК 2 1 2 2529.60
5 НСК PlanНСК5 ТС от 50 до 100 кг loc 11628 02293НСК 2 1 2 2529.60
6 НСК PlanНСК1 ТС от 50 до 100 кг loc 11709 02293НСК 2 3 1 2873.76
7 НСК PlanНСК2 ТС от 50 до 100 кг loc 11709 02293НСК 2 3 1 2873.76
8 НСК PlanНСК3 ТС от 50 до 100 кг loc 11709 02293НСК 2 3 1 2873.76
9 НСК PlanНСК4 ТС от 50 до 100 кг loc 11709 02293НСК 2 3 1 2873.76
10 НСК PlanНСК5 ТС от 50 до 100 кг loc 11709 02293НСК 2 3 1 2873.76
regplan.2019.05.meanot.2018.05_amount regplan.2019.06.meanot.2018.06_amount X.
1 1054.00 0.00 …
2 1054.00 0.00 …
3 1054.00 0.00 …
4 1054.00 0.00 …
5 1054.00 0.00 …
6 3412.59 1077.66 …
7 3412.59 1077.66 …
8 3412.59 1077.66 …
9 3412.59 1077.66 …
10 3412.59 1077.66 …
Так что в выходных 01-03 месяцев отсутствуют.
если в таблице anyta, в столбце data указано 05 (МОЖЕТ)
так что возвращайте столбцы, где указано 05 месяцев.
В столбце данных второй таблицы не может быть другого месяца
Но обратите внимание, что в таблице итого названия столбцов могут отличаться
regplan 2019-01*meanot 2018-01_amount
regplan 2019-02*meanot 2018-02_amount
regplan 2019-03*meanot 2018-03_amount
regplan 2019-04*meanot 2018-04_amount
regplan 2019-05*meanot 2018-05_amount
regplan 2019-06*meanot 2018-06_amount
meanot 2018-03
meanot 2018-04
meanot 2018-05
reg voz 2019-03/reg otgruz план шт 2019-03
reg voz 2019-04/reg otgruz план шт 2019-04
NewTT2019-03
NewTT2019-04
NewTT2019-03_amount
NewTT2019-04_amount
если у нас есть две данные в именах столбцов, таких как
regplan 2019-01*meanot 2018-01_amount
т., Вывод от regplan 2019-0 4 *** означает 2018-0 4 ** _ сумма
NewTT2019-03_amount
в этом столбце данных выводится из NewTT2019- 04 _amount
Как создать такое условие