R добавить повторяющиеся строки на основе указанных c значений в строке - PullRequest
1 голос
/ 26 мая 2020

У меня есть набор данных, в котором я хотел бы дублировать строки на основе определенных c значений.

Допустим, у меня есть образец набора данных о выборах

vote_share  county   year
0.6         A        2016
0.4         B        2016
0.2         C        2016
0.8         A        2012
0.1         B        2012
0.3         C        2012

Я хотел бы создать дубликаты одних и тех же значений для промежуточных лет: значения 2012 года для каждого округа также на 2013-2015 годы; то же самое для 2017-2019 со значениями 2016.

Я не уверен, следует ли мне делать это с помощью циклов или, возможно, с помощью tidyverse?

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете создать нужные строки в качестве нового фрейма данных, привязать его к исходному фрейму данных (здесь называется df), а затем использовать tidyr::fill для заполнения недостающих долей голосов

df_2 <- data.frame(county = rep(c("A", "B", "C"), each = 6),
                   year = rep(c(2013, 2014, 2015, 2017, 2018, 2019), 3),
                   vote_share = NA,
                   stringsAsFactors = FALSE)

df <- rbind(df, df_2)

library(tidyverse)
df_full %>% 
  arrange(county, year) %>% 
  tidyr::fill(vote_share)
   # A tibble: 24 x 3
   vote_share county  year
        <dbl> <chr>  <dbl>
 1        0.8 A       2012
 2        0.8 A       2013
 3        0.8 A       2014
 4        0.8 A       2015
 5        0.6 A       2016
 6        0.6 A       2017
 7        0.6 A       2018
 8        0.6 A       2019
 9        0.1 B       2012
10        0.1 B       2013
# ... with 14 more rows
...