在R中为奇数范围生成整数的有序列

时间:2012-11-29 05:21:27

标签: r

Total 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

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

1 个答案:

答案 0 :(得分:3)

您正在寻找expand.grid

 df <- expand.grid(year = 1990:2001, month = 1:12)