我可以使用循环回答这个问题,我想不用它(最好是在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
答案 0 :(得分:4)
此处无需使用dplyr
。
Data$Countries <- Countries[c(1, cumsum(diff(Data$Date) <= 0) + 1)]