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

我需要将国家/地区列表分配给数据。申请规则是——一直申请同一个国家,直到数据框中两个相邻日期的差<=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 回答