2

ループを使用してこの質問に答えることができます。ループなしで(できれば dplyr または plyr で)やりたいと思います。

データフレームと国のリストがあります

Data <- data.frame(
  Date = c(2012:2014,2014,2013:2014),
  Value = rnorm(6),
)

Countries <- c("AUS","USA","UK")

データフレームはこんな感じ

 Date       Value
1 2012  0.20200445
2 2013  1.75576426
3 2014 -0.67385232
4 2014  2.36476344
5 2013 -2.00068346
6 2014 -0.01290928

国リストをデータに割り当てる必要があります。適用のルールは、データ フレーム内の隣接する 2 つの日付の差が 0 以下になるまで、同じ国を適用し続けることです。完成品は次のようになります。

  Date       Value Countries
1 2012  0.64706706       AUS
2 2013  0.26878534       AUS
3 2014 -0.07091867       AUS
4 2014  0.49546373       USA
5 2013 -0.18158935        UK
6 2014 -0.43114076        UK
4

1 に答える 1

4

ここで使用する必要はありませんdplyr

Data$Countries <- Countries[c(1, cumsum(diff(Data$Date) <= 0) + 1)]
于 2014-03-01T07:21:26.810 に答える