Дублирование подмножества строк с дубликатами, имеющими разные значения? - PullRequest
0 голосов
/ 09 июня 2018

Пример данных:

   Date    Value GeographyName                               Newdate
   <chr>   <dbl> <chr>                                         <int>
 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

Я хочу продублировать строки с годом 2012 в векторе Newdate три раза, что в общей сложности составит шесть новых дублированных строк.Однако я хочу, чтобы две новые строки теперь имели значение Newdate 2011, еще две строки имели значение 2010, а две последние строки имели значение 2009,Есть ли способ добиться этого в процессе дублирования?

1 Ответ

0 голосов
/ 09 июня 2018

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...