【问题标题】:Binding in R without a loop在没有循环的情况下在 R 中绑定
【发布时间】:2014-03-01 05:45:14
【问题描述】:

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

我需要将国家/地区列表分配给数据。申请规则是——一直申请同一个国家,直到数据框中相邻两个日期的差

  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

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这里不需要使用dplyr

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 2018-11-02
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多