1

总 newb R 问题,但这里是:假设我想创建一个包含两列的数据框,一列包含一个范围内的所有年份,另一列包含每年的每个月。当我完成后,我应该有这个:

year month
1990 1
1990 2
1990 3

等等。对于 cbind 来说,这似乎是一项非常明显的工作,将一个范围变成一个列,然后重复,每年生成 12 个实例。这很有效,但仅适用于该范围内的偶数年。因此,例如:

df <- data.frame(cbind(year=rep(c(1990:2000), 12)))

工作正常。这也是如此:

df <- data.frame(cbind(year=rep(c(1990:2000), 12), month=c(1:12)))

但这会产生明显的废话:

df <- data.frame(cbind(year=rep(c(1990:2001), 12), month=c(1:12)))

正如您所期望的那样,第一行代码在该范围内每年生成 12 个实例;第二行产生所需的结果。第三行每年生成 12 个实例,其中每年只有一个月数。因此:

year month 
1990  1
1990  1
1990  1

有没有办法解决这个问题,不需要总是增加一年并在以后修剪它?

4

1 回答 1

3

你正在寻找expand.grid

 df <- expand.grid(year = 1990:2001, month = 1:12)
于 2012-11-29T05:26:13.720 回答