我如何以这种特定方式操作数据?

How can I manipulate data in this specific way?

很抱歉标题含糊不清,但部分问题是我不知道用什么行话来描述我在这里要做的事情。

我有这样的数据:

STATE   COUNT   DATE
LA       20     20160401
ME       83     20160601
MD        4     20160701

我想要做的是能够选择一个日期(比如 20160301)并将我的数据处理成以下内容:

STATE   COUNT   DATE      NEWER_THAN
LA       20     20160401  20160301
LA       20     20160401  20160401  
ME       83     20160601  20160301
ME       83     20160601  20160401
ME       83     20160601  20160501
ME       83     20160601  20160601
MD        4     20160701  20160301
MD        4     20160701  20160401
MD        4     20160701  20160501
MD        4     20160701  20160601
MD        4     20160701  20160701

所以 LA 在第一个 table 中有一个日期 20160401,所以它在第二个 table 中有 2 行,因为三月和四月在我选择的日期 20160301 当天或之后.

同样,ME 在第一个 table 中的日期为 201601,因此在第二个 table 中有 4 行,因为三月、四月、五月和六月是在或之后我选的日期是20160301.

我的问题是是否有人可以让我开始了解如何在 R 中实现这种类型的数据操作。

如果将 "DATE" 字段转换为实际的 Date 对象,则可以通过减去 2 个日期来得到它们之间的差值。从你知道的差异中,你必须重复每一行多少次。 按照你的例子:

dataset <- data.frame(STATE = c("LA", "ME", "MD"), 
                  COUNT = c(20, 83, 4), 
                  DATE = c("20160401", "20160601", "20160701"), 
                  stringsAsFactors = F)

format <- "%Y%m%d"
dataset$DATE <- strptime(dataset$DATE, format)

newDate <- strptime("20160301", format)

n.times <- ceiling(difftime(dataset$DATE, newDate, units = "days")/30)
dataset[rep(seq_len(nrow(dataset)), n.times), ]

将产生以下结果:

    STATE COUNT       DATE
     LA    20 2016-04-01
     LA    20 2016-04-01
     ME    83 2016-06-01
     ME    83 2016-06-01
     ME    83 2016-06-01
     ME    83 2016-06-01
     MD     4 2016-07-01
     MD     4 2016-07-01
     MD     4 2016-07-01
     MD     4 2016-07-01
     MD     4 2016-07-01