在R中绑定没有循环

时间:2014-03-01 05:45:15

标签: r dplyr

我可以使用循环回答这个问题,我想不用它(最好是在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

我需要将国家/地区列表分配给数据。申请规则是 - 继续应用同一个国家/地区,直到数据框中两个相邻日期之间的差异为&lt; = 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

1 个答案:

答案 0 :(得分:4)

此处无需使用dplyr

Data$Countries <- Countries[c(1, cumsum(diff(Data$Date) <= 0) + 1)]