dplyr::bind_rows
обеспечивает гибкость для связывания строк нескольких фреймов данных.Можно сначала отфильтровать df
, чтобы получить строки, содержащие Newdate == 2012
, а затем объединить его несколько раз, используя bind_rows
.Измените Newdate
для описания с помощью OP, а затем объедините его с исходным df
.
library(dplyr)
df %>% filter(Newdate == 2012) %>%
bind_rows(., ., .) %>% #Duplicating rows 3 times
mutate(Newdate = Newdate - (row_number()+1) %/% 2) %>%
bind_rows(df, .)
# Date Value GeographyName Newdate
# 1 2011/12 0.698 NHS Wigan Borough CCG 2012
# 2 2011/12 0.674 NHS Gateshead CCG 2012
# 3 2012/13 0.775 NHS North Hampshire CCG 2013
# 4 2012/13 0.686 NHS St Helens CCG 2013
# 5 2012/13 0.716 NHS Wakefield CCG 2013
# 6 2012/13 0.750 NHS West Lancashire CCG 2013
# 7 2012/13 0.722 NHS Hull CCG 2013
# 8 2013/14 0.746 NHS Brent CCG 2014
# 9 2013/14 0.776 NHS Hambleton, Richmondshire and Whitby CCG 2014
# 10 2013/14 0.686 NHS Barnsley CCG 2014
# 11 2011/12 0.698 NHS Wigan Borough CCG 2011
# 12 2011/12 0.674 NHS Gateshead CCG 2011
# 13 2011/12 0.698 NHS Wigan Borough CCG 2010
# 14 2011/12 0.674 NHS Gateshead CCG 2010
# 15 2011/12 0.698 NHS Wigan Borough CCG 2009
# 16 2011/12 0.674 NHS Gateshead CCG 2009
Данные:
df <- read.table(text =
"Date Value GeographyName Newdate
1 2011/12 0.698 'NHS Wigan Borough CCG' 2012
2 2011/12 0.674 'NHS Gateshead CCG' 2012
3 2012/13 0.775 'NHS North Hampshire CCG' 2013
4 2012/13 0.686 'NHS St Helens CCG' 2013
5 2012/13 0.716 'NHS Wakefield CCG' 2013
6 2012/13 0.750 'NHS West Lancashire CCG' 2013
7 2012/13 0.722 'NHS Hull CCG' 2013
8 2013/14 0.746 'NHS Brent CCG' 2014
9 2013/14 0.776 'NHS Hambleton, Richmondshire and Whitby CCG' 2014
10 2013/14 0.686 'NHS Barnsley CCG' 2014",
stringsAsFactors = FALSE, header = TRUE)