【问题标题】:R add duplicate rows based on specific values in a rowR根据一行中的特定值添加重复行
【发布时间】:2020-09-13 09:25:33
【问题描述】:
我有一个数据集,我想在其中根据特定值复制行。
假设我有一个示例选举数据集
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?
【问题讨论】:
标签:
r
loops
duplicates
tidyverse
【解决方案1】:
您可以将所需的行创建为新的数据框,将其绑定到您的原始数据框(此处称为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