如何在 R 中制作重复模式的数据框并向该重复添加顺序模式?

How can I make a data frame in R that repeats a pattern and adds a sequential pattern to that repeat?

假设我有一个国家向量和一个年份向量

countries = c("Afganistan", "Armenia", ... "Zimbabwe")
year = 2004:2019

我想创建一个重复所有国家并为每个重复添加一年的列表,如下所示:

Afghanistan    2004
Armenia        2004
...
Zimbabwe       2004
Afganistan     2005
Armenia        2005
...
Zimbabwe       2019

这样就可以了

x = data.frame(
    countries   = c("a", "b", "c", "d"),
    years = c(1, 2, 3, 4),
    years2 = c(1, 2, 3, 4)
  )

  melt(data = x, id.vars = "countries", measure.vars = c("years", "years2"))

但必须有更简单的方法,这样我就不必重复 years 变量。

这是你想要的吗?

expand.grid(countries = c("a", "b", "c", "d"),
            years = c(1, 2, 3, 4))
#>    countries years
#> 1          a     1
#> 2          b     1
#> 3          c     1
#> 4          d     1
#> 5          a     2
#> 6          b     2
#> 7          c     2
#> 8          d     2
#> 9          a     3
#> 10         b     3
#> 11         c     3
#> 12         d     3
#> 13         a     4
#> 14         b     4
#> 15         c     4
#> 16         d     4

reprex package (v0.2.1)

创建于 2019-12-16