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
有没有办法解决这个问题,不需要总是增加一年并在以后修剪它?
答案 0 :(得分:3)
您正在寻找expand.grid
df <- expand.grid(year = 1990:2001, month = 1:12)