【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2021-05-26
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多