【问题标题】:Splitting Data before and after a certain date在某个日期之前和之后拆分数据
【发布时间】:2014-03-29 21:47:12
【问题描述】:

我有一个数据框,我想将其拆分为两个不同的数据框,一个在某个日期之前,一个在该日期之后。哪个是最好的代码,我尝试了拆分代码但似乎无法让它工作?

【问题讨论】:

  • 您能与我们分享您的数据框吗?试试dput(df[1:10, ]),其中df 是包含数据框的变量的名称。

标签: r date split dataframe


【解决方案1】:

像这样?

df  <- data.frame(date=as.Date("2013-01-01")+1:365, x=1:365)
lst <- split(df,df$date<as.Date("2013-06-01"))

这会将 df 拆分为 2 个数据帧,一个日期在 2013-06-01 之前,另一个日期在之后。您可以通过lst[1]lst[2] 访问数据框

【讨论】:

  • 这个是365条数据的数据框吗?
  • 这只是一个例子。唯一的要求是包含日期的列是日期格式或可以使用例如转换df$dates &lt;- as.Date(df$dates).
  • 当我尝试代码时 df$dates 它给了我响应 logical(0) 你知道我做错了什么吗?
  • df$dates 是日期还是字符串?尝试 df$dates
  • 它给出了这个消息:as.Date.default(df$dates) 中的错误:不知道如何将“df$dates”转换为“日期”类
【解决方案2】:

让我向您展示如何使用data.table 快速轻松地完成此操作。

require(data.table)
my_df = data.table(a=seq.Date(from=as.Date("2012-01-01"), by=1, len=10),b=10:1)
N = as.Date("2012-01-05") #where you want to split
df1 = my_df[a<N]
df2 = my_df[a>=N]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2018-09-01
    相关资源
    最近更新 更多