Построение из этого вопроса , я пытаюсь создать одну и ту же фиктивную переменную для максимального значения каждой группы, но вместо группировки по столбцу месяца я бы хотел сгруппировать по и месяц, и год, поэтому я получаю максимальное значение для обоих значений, то есть фиктивное значение для максимального значения в 1-2017, 2-2017 и т. д. c.
Я создал здесь демонстрационный набор данных, а также некоторый код, показывающий нежелательный результат, когда я пытаюсь сгруппировать по двум столбцам.
df<- data.frame(date= seq.Date(from = as.Date('2017-01-01'), by= 14, length.out = 100), var1= rnorm(20, 5, 3))
df$month<- as.numeric(strftime(df$date, "%m"))
df$year <- as.numeric(strftime(df$date, "%Y"))
df <- df %>%
group_by(year, month) %>%
mutate(dummy = as.integer(var1 == max(var1))) %>%
ungroup
Когда я запускаю этот код, это вывод, который я получаю.
structure(list(date = structure(c(17167L, 17181L, 17195L, 17209L,
17223L, 17237L, 17251L, 17265L, 17279L, 17293L, 17307L, 17321L,
17335L, 17349L, 17363L, 17377L, 17391L, 17405L, 17419L, 17433L,
17447L, 17461L, 17475L, 17489L, 17503L, 17517L, 17531L, 17545L,
17559L, 17573L, 17587L, 17601L, 17615L, 17629L, 17643L, 17657L,
17671L, 17685L, 17699L, 17713L, 17727L, 17741L, 17755L, 17769L,
17783L, 17797L, 17811L, 17825L, 17839L, 17853L, 17867L, 17881L,
17895L, 17909L, 17923L, 17937L, 17951L, 17965L, 17979L, 17993L,
18007L, 18021L, 18035L, 18049L, 18063L, 18077L, 18091L, 18105L,
18119L, 18133L, 18147L, 18161L, 18175L, 18189L, 18203L, 18217L,
18231L, 18245L, 18259L, 18273L, 18287L, 18301L, 18315L, 18329L,
18343L, 18357L, 18371L, 18385L, 18399L, 18413L, 18427L, 18441L,
18455L, 18469L, 18483L, 18497L, 18511L, 18525L, 18539L, 18553L
), class = "Date"), var1 = c(7.610410421533, 4.39838519593849,
7.29367017299385, 4.65490632032971, 5.98987372646137, 7.89362434824241,
7.37466247923975, 3.55735383387344, 2.04726523393801, 7.85753545892588,
8.9757840439474, 3.03010111198631, 8.12870854721674, 4.94313056382185,
10.3008527572542, 3.38195982516332, 2.38095744572549, 2.33860273928046,
4.55108829246478, 10.3054094468083, 7.610410421533, 4.39838519593849,
7.29367017299385, 4.65490632032971, 5.98987372646137, 7.89362434824241,
7.37466247923975, 3.55735383387344, 2.04726523393801, 7.85753545892588,
8.9757840439474, 3.03010111198631, 8.12870854721674, 4.94313056382185,
10.3008527572542, 3.38195982516332, 2.38095744572549, 2.33860273928046,
4.55108829246478, 10.3054094468083, 7.610410421533, 4.39838519593849,
7.29367017299385, 4.65490632032971, 5.98987372646137, 7.89362434824241,
7.37466247923975, 3.55735383387344, 2.04726523393801, 7.85753545892588,
8.9757840439474, 3.03010111198631, 8.12870854721674, 4.94313056382185,
10.3008527572542, 3.38195982516332, 2.38095744572549, 2.33860273928046,
4.55108829246478, 10.3054094468083, 7.610410421533, 4.39838519593849,
7.29367017299385, 4.65490632032971, 5.98987372646137, 7.89362434824241,
7.37466247923975, 3.55735383387344, 2.04726523393801, 7.85753545892588,
8.9757840439474, 3.03010111198631, 8.12870854721674, 4.94313056382185,
10.3008527572542, 3.38195982516332, 2.38095744572549, 2.33860273928046,
4.55108829246478, 10.3054094468083, 7.610410421533, 4.39838519593849,
7.29367017299385, 4.65490632032971, 5.98987372646137, 7.89362434824241,
7.37466247923975, 3.55735383387344, 2.04726523393801, 7.85753545892588,
8.9757840439474, 3.03010111198631, 8.12870854721674, 4.94313056382185,
10.3008527572542, 3.38195982516332, 2.38095744572549, 2.33860273928046,
4.55108829246478, 10.3054094468083), month = c(1, 1, 1, 2, 2,
3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
12, 12, 12, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8,
9, 9, 10, 10, 11, 11, 12, 12, 12, 1, 1, 2, 2, 3, 3, 4, 4, 5,
5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 1,
1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10),
year = c(2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019,
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
2019, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
2020, 2020), dummy = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L)), row.names = c(NA, -100L), class = c("tbl_df", "tbl",
"data.frame"))