1

完全なnewb Rの質問ですが、ここにあります.2つの列を持つデータフレームを作成したいとしましょう。1つは範囲内のすべての年、もう1つは各年の毎月です。私が終わったら、私はこれを持っているはずです:

year month
1990 1
1990 2
1990 3

など。範囲を列に変換し、繰り返し、毎年 12 のインスタンスを生成するという cbind の非常に明白な仕事のように思えます。これはうまく機能しますが、範囲内の偶数年だけです。たとえば、次のようになります。

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 個のインスタンスを生成します。2 行目で目的の結果が生成されます。3 行目は、各年の 12 のインスタンスを生成します。各年は 1 つの月番号のみを取得します。したがって:

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 に答える