首页 > 解决方案 > 将日期添加到非日期数字变量?

问题描述

我试图展示随着时间的推移两个政党在美国各县的表现及其原因的变化。

我的数据看起来像:

County <- c("Franklin", "Rockham", "Smith", "Udall")
PopulationDensity <- c(63, 1250, 480, 129)
RepublicanPercent2000 <- c(42, 38, 62, 57)
DemocratPercent2000 <- c(54, 57, 34, 41)
RepublicanPercent2004 <- c(47, 35, 67, 44)
DemocratPercent2004 <- c(48, 64, 27, 49)
RepublicanPercent2008 <- c(44, 33, 64, 48)
DemocratPercent2008 <- c(55, 65, 31, 49)

PartisanData <- cbind.data.frame(County, PopulationDensity, RepublicanPercent2000, 
              DemocratPercent2000, RepublicanPercent2004, DemocratPercent2004,  
              RepublicanPercent2008, DemocratPercent2008)

重复了数千个县和数十次选举。我如何展示县密度如何随着时间的推移影响民主党和共和党的百分比?我对 R 比较陌生,而且我很困惑。我不太清楚如何概念化解决方案。我所能想到的就是每年为每个县创建一个单独的观察结果,但我什至不确定这是否可以分析密度如何影响选票,我想在创建数据集之前确定这一点这么多观察。我的脑袋疼。请帮忙。

再次感谢!

标签: rtime-series

解决方案


你可以用tidyr::pivot_longer...

library(tidyr)

PartisanData %>% 
  pivot_longer(-c(1:2),                                  #don't pivot first two cols
               names_sep = "Percent",                    #split col names at "Percent"...
               names_to = c("Party", "Year"),            #...into Party and Year columns
               values_to = "percent")                    #name for value column

   County   PopulationDensity Party      Year  percent
   <fct>                <dbl> <chr>      <chr>   <dbl>
 1 Franklin                63 Republican 2000       42
 2 Franklin                63 Democrat   2000       54
 3 Franklin                63 Republican 2004       47
 4 Franklin                63 Democrat   2004       48
 5 Franklin                63 Republican 2008       44
 6 Franklin                63 Democrat   2008       55
 7 Rockham               1250 Republican 2000       38
 8 Rockham               1250 Democrat   2000       57
 9 Rockham               1250 Republican 2004       35
10 Rockham               1250 Democrat   2004       64
# ... with 14 more rows

然后,它可以更容易地根据需要进行过滤或排序。


推荐阅读