r - 在 R 中将数据从 from-to 格式重塑为 country-year
问题描述
我有一个数据集,其中包含以下格式的政治领导人信息:
leader country begin end
clinton USA 1994 2001
bush USA 2002 2009
... ... ... ...
但是,为了将其与其他数据合并,我想将其重塑为常用的国家年份格式,如下所示:
country year leader
USA 1994 clinton
USA 1995 clinton
我目前的方法(创建一个空数据框并使用嵌套的 for 循环)需要很长时间,而且 tbh 似乎很愚蠢。由于数据集相当大,我正在寻找一种更智能、更有效的方法来做到这一点。
PS:不要担心奇怪的年份,领导者被分配到他们已经开始担任领导者的年份。这就是为什么布什只在 2002 年而不是 2001 年开始
解决方案
你的意思是这样的吗?
df <- structure(list(leader = structure(2:1, .Label = c("bush", "clinton"
), class = "factor"), country = structure(c(1L, 1L), .Label = "USA", class = "factor"),
begin = c(1994L, 2002L), end = c(2001L, 2009L)), class = "data.frame", row.names = c(NA,
-2L))
df %>%
group_by(leader,country) %>%
expand(year=begin:end) %>%
arrange(year)
你得到每个国家+领导人,从开始到结束的所有年份
# A tibble: 16 x 3
# Groups: leader, country [2]
leader country year
<fct> <fct> <int>
1 clinton USA 1994
2 clinton USA 1995
3 clinton USA 1996
4 clinton USA 1997
5 clinton USA 1998
6 clinton USA 1999
7 clinton USA 2000
8 clinton USA 2001
9 bush USA 2002
10 bush USA 2003
11 bush USA 2004
12 bush USA 2005
13 bush USA 2006
14 bush USA 2007
15 bush USA 2008
16 bush USA 2009
推荐阅读
- angular5 - 如何在角度 5 中使用 pathlocationstrategy 设置基本 href 或 APP_BASE_HREF?
- salt-stack - salt-api 失败
- android - 无法在我的应用程序中更改启动画面的主题?
- android - RecyclerView 网格中的中心项目
- spring - 临时上传位置[/tmp/tomcat.4296537502689403143.5000/work/Tomcat/localhost/ROOT]无效
- r - 加权。R中的平均误差
- c++ - C++中十六进制的输出
- linux - Apparmor:是否可以从可执行文件中调用另一个可执行文件?
- internet-explorer - 我的网页没有在 IE 中打开,但在 chrome 和 firefox 中打开
- python - 扩大和缩小集合列表