【问题标题】:Specify time periods for multiple years指定多年的时间段
【发布时间】:2018-08-21 04:55:59
【问题描述】:

我有一个包含变量“日期”的数据集,从 2001 年 1 月 1 日到 2015 年 12 月 31 日。我需要生成一个新变量来表示不同的时间段。

时间间隔:1 月 15 日至 2 月 10 日。

2015 年 1 月 15 日至 2 月 10 日 -- 时间 = 1

2001-2014 年 1 月 15 日至 2 月 10 日 -- 时间 = 0

有没有生成新变量的好方法?

非常感谢!

【问题讨论】:

  • 您可以将mutateifelse 语句一起使用。如果您提供一些示例代码,说明如何做到这一点会更容易。

标签: r


【解决方案1】:

如果您的日期变量还不是日期时间对象,您可以使用as.Date() 函数将其转换,如下所示:

df$Date <- as.Date(df$Date, format = "%Y-%m-%d")

您可以使用ifelse 语句来创建一个新变量,如下所示:

df$Time <- ifelse(df$Date > "2015-01-15" & df$Date < "2015-02-10", 1, 
ifelse((df$Date > "2014-01-15" & df$Date < "2014-02-10") | 
(df$Date > "2013-01-15" & df$Date < "2013-02-10") | 
(df$Date > "2012-01-15" & df$Date < "2012-02-10") | 
(df$Date > "2011-01-15" & df$Date < "2011-02-10"), 0, "NA"))

【讨论】:

  • 谢谢! Time=1(2015 年 1 月 15 日至 2 月 10 日)是正确的;但是,对于 Time=0,它将包括 2015 年 1 月 15 日至 2 月 10 日期间之外的所有时间。对于 Time=0,我需要的是:2001 年 1 月 15 日至 2 月 10 日,2002 年,2003 年 ...2014 年。
  • 那么在这些时间段之外你想要什么?例如:2001 年 2 月 11 日
  • 2001 年 2 月 11 日和其他日期将是“na”,我不需要这些日期。
  • 这是一个非常具体的要求。请参阅上面我编辑的答案,并以类似的方式添加剩余年份
  • 谢谢!有用。问题是有14年,我们要重复14次。也许有一个方便的方法来解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
相关资源
最近更新 更多