对模糊标题表示道歉,但问题的一部分是我不知道用什么术语来描述我在这里要做的事情。
我的数据如下:
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在第一张表中的日期为20160401,所以在第二张表格中,自从我选择20160301之日或之后,第二张表中的第二行最终为2行。
同样地,ME在第一个表中的日期为201601,因此在第二个表中最后有4行,因为3月,4月,5月和6月是在我选择20160301之日或之后。
我的问题是,是否有人可以让我开始研究如何在R中实现这种类型的数据操作。
答案 0 :(得分:1)
如果您转换了" 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