在 R 中将数据从 from-to 格式重塑为 country-year
Reshaping data from an from-to format into country-year in R
我有一个包含以下格式的政治领导人信息的数据集:
leader country begin end
clinton USA 1994 2001
bush USA 2002 2009
... ... ... ...
但是,为了与其他数据合并,我想将其重塑为常用的国家/地区年格式,如下所示:
country year leader
USA 1994 clinton
USA 1995 clinton
我目前的方法(创建一个空数据框并使用嵌套 for 循环)需要很长时间,而且看起来很愚蠢。由于数据集相当大,我正在寻找一种更智能、更有效的方法来做到这一点。
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
我有一个包含以下格式的政治领导人信息的数据集:
leader country begin end
clinton USA 1994 2001
bush USA 2002 2009
... ... ... ...
但是,为了与其他数据合并,我想将其重塑为常用的国家/地区年格式,如下所示:
country year leader
USA 1994 clinton
USA 1995 clinton
我目前的方法(创建一个空数据框并使用嵌套 for 循环)需要很长时间,而且看起来很愚蠢。由于数据集相当大,我正在寻找一种更智能、更有效的方法来做到这一点。
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